我爱编程

定位display=none的元素

2018-01-26  本文已影响0人  我不喜欢吃苹果

将百度搜索设置为每页显示20条,python代码如下:

#coding=utf-8

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

import os,time

wb=webdriver.Firefox()

wb.get("http://www.baidu.com")

#定位设置

wb.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[8]")

#定位搜索设置

wb.find_element_by_link_text("搜索设置").click()

time.sleep(3)

#设置每页显示20条

tmp=wb.find_element_by_name("NR")

tmp.find_element_by_xpath("//option[@value='20']").click()

#点击保存设置按钮

wb.find_element_by_class_name("prefpanelgo").click()

wb.implicitly_wait(5)

#在弹出的窗口中点击确定

wb.switch_to_alert().accept()

#在搜索hello world查看结果

wb.find_element_by_id("kw").send_keys("hello world")

wb.find_element_by_id("su").click()

time.sleep(3)

wb.quit()

如果我们直接执行,会出现错误:

百度首页html

可以看到display:none,导致元素定位不到。

解决方法:

1.模仿鼠标行为

link=wb.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[8]")

ActionChains(wb).move_to_element(link).perform()

2.执行JavaScript脚本(暂时行不通)

js="document.getElementsByClassName('bdpfmenu').display='block';"

wb.execute_script(js)

不过,我试了很多display=none的情况:

(1)利用firebug等工具可以查看到页面有显示,只是代码默认为灰色

百度首页代码

(2)利用firebug等工具看不到页面中有显示,需点击加载过后才会有代码显显示

点击前网页代码
点击后网页代码

执行JavaScript脚本不可行,暂时还找不到原因

上一篇下一篇

猜你喜欢

热点阅读