html5网站代理,赣州网站建设行情,wordpress主题 犀牛,免费手工活外发加工网站元素无法定位问题解决方法 1、display屏蔽元素2、iframe内元素无法定位3、 根据部分元素属性定位4、页面跳转到新的标签页#xff0c;或者弹出的警告框等6、使用WebDriver调用JavaScript代码代替无法实现的功能 1、display屏蔽元素
分析一下html的display属性#xff0c;可以… 元素无法定位问题解决方法 1、display屏蔽元素2、iframe内元素无法定位3、 根据部分元素属性定位4、页面跳转到新的标签页或者弹出的警告框等6、使用WebDriver调用JavaScript代码代替无法实现的功能 1、display屏蔽元素
分析一下html的display属性可以用js强行点击这个元素或者改变元素的display属性去实现定位
扩展一下
display: none 和hidden的区别 共同点把网页中的某个元素隐藏起来他们在selenium中都是定位不到的。 区别display:none不为隐藏的对象保留其物理空间该对象在这个页面上彻底消失看不到/摸不到hidden使对象在网页上不可见但该对象在网页中依然占有空间看不到/摸得到。 备注isElementPresent()来判断元素是否存在。
2、iframe内元素无法定位
如果iframe有name或id的话直接使用switch_to_frame(“name值”)或switch_to_frame(“id值”)
driverwebdriver.Firefox()
driver.get(rhttp://www.126.com/)
driver.switch_to_frame(x-URS-iframe) #需先跳转到iframe框架
usernamedriver.find_element_by_name(email)
username.clear()如果iframe没有name或id的话则可以通过下面的方式定位 #先通过class定位到iframe elementi driver.find_element_by_class_name(‘APP-editor-iframe’) #再将定位对象传给switch_to_frame()方法 driver.switch_to_frame(elementi)
如果完成操作后可以通过switch_to.parent_content()方法跳出当前iframe或者还可以通过switch_to.default_content()方法跳回最外层的页面。
3、 根据部分元素属性定位
xpath中提供了三个非常好的方法来为我们定位部分属性值
driver.find_element_by_xpath(“//div[contains(id, ‘btn-attention’)]”)
driver.find_element_by_xpath(“//div[starts-with(id, ‘btn-attention’)]”)
driver.find_element_by_xpath(“//div[ends-with(id, ‘btn-attention’)]”) # 这个需要结尾是‘btn-attention’
4、页面跳转到新的标签页或者弹出的警告框等
在页面操作过程中有时候点击某个链接会弹出新窗口这时就需要切换焦点到新窗口上进行操作。 解决方法1driver.switch_to.window(window_handle)切换到新窗口。 首先获取当前窗口的句柄driver.current_window_handle接着打开弹出新窗口获得当前打开的所有窗口的句柄driver.window_handles。通过for循环遍历handle如果不等于第一次打开窗口的句柄那么一定是新窗口的句柄因为执行过程只打开了两个窗口改变条件如果等于第一次打开窗口的句柄那么可以切换回第一次打开的窗口。 解决方法2对于JavaScript生成的alert、confirm以及prompt无法使用前端工具对弹出窗口进行定位的使用driver.switch_to.alert方法定位弹出框。alert的方法有
.accept() 等同于点击“确认”或“OK”
.dismiss() 等同于点击“取消”或“Cancel”
.text 获取alert文本内容对有信息显示的alert框
.send_keys(text) 发送文本对有提交需求的prompt框
.authenticate(username,password) 验证针对需要身份验证的alert6、使用WebDriver调用JavaScript代码代替无法实现的功能
对于有些WebDriver没有提供的方法或者无法实现的功能WebDriver提供了driver.execute_script()方法来执行JavaScript代码。 解决方法如果页面内容过长窗口最大化也无法查看到所有元素可以通过执行JavaScript脚本实现滚动条的拖动等动作。
driver.execute_script(window.scrollTo(0, document.body.scrollHeight);)以上语句实现了拉动页面到底部的功能其中window.scrollTo(左边距上边距)是JavaScript中用于设置浏览器窗口滚动条的水平和垂直位置的代码。
text input text
driver.execute_script(var objdocument.getElementById(text); obj.value text ;)假设一个输入框可以通过idtext’将其定位却不能通过send_keys()输入文本内容可以借助JavaScript代码来实现。
video driver.find_element_by_xpath(body/Section[1]/div/video)
url driver.execute_script(return arguments[0].currentSrc;, video)
print(url) 返回文件播放地址print(start) 播放视屏
driver.execute_script(return arguments[0].play(), video)sleep(15) 播放15秒钟print(stop) 暂停视屏
driver.execute_script(arguments[0].pause(), video)其中arguments是JavaScript的内置对象。因为将video对象传给了arguments[0]所以arguments[0]相当于JavaScript脚本的document.getElementsByTagName(“video”)。JavaScript不支持重载使用arguments对象可以模拟函数重载效果。