java selenium智能等待页面加载完成示例代码
java selenium 智能等待页面加载完成
我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作。 否则页面上的元素不存在,会抛出异常。
或者碰到ajax异步加载,我们需要等待元素加载完成后, 才能操作
selenium 中提供了非常简单,智能的方法,来判断元素是否存在.
阅读目录
- 实例要求
- 隐式等待
- 显式等待
实例要求
实例:set_timeout.html 下面的html 代码, 点击click 按钮5秒后, 页面上会出现一个红色的div快, 我们需要写一段自动化脚本智能的去判断这个div是否存在, 然后把这个div 然后高亮。
<html> <head> <title>set timeout</title> <style> .red_box {background-color: red; width = 20%; height: 100px; border: none;} </style> <script> function show_div(){ settimeout("create_div()", 5000); } function create_div(){ d = document.createelement('div'); d.classname = "red_box"; document.body.appendchild(d); } </script> </head> <body> <button id = "b" onclick = "show_div()">click</button> </body> </html>
隐式等待
webdriver driver = new firefoxdriver(); driver.get("file:///c:/users/tank/desktop/set_timeout.html"); driver.manage().timeouts().implicitlywait(20, timeunit.seconds); webelement element = driver.findelement(by.cssselector(".red_box")); ((javascriptexecutor)driver).executescript("arguments[0].style.border = \"5px solid yellow\"",element);
其中
driver.manage().timeouts().implicitlywait(10, timeunit.seconds);
意思是, 总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常 org.openqa.selenium.nosuchelementexception
显式等待
显式等待 使用expectedconditions类中自带方法, 可以进行显试等待的判断。
显式等待可以自定义等待的条件,用于更加复杂的页面等待条件
等待的条件 |
webdriver方法 |
页面元素是否在页面上可用和可被单击 |
elementtobeclickable(by locator) |
页面元素处于被选中状态 |
elementtobeselected(webelement element) |
页面元素在页面中存在 |
presenceofelementlocated(by locator) |
在页面元素中是否包含特定的文本 |
texttobepresentinelement(by locator) |
页面元素值 |
texttobepresentinelementvalue(by locator, java.lang.string text) |
标题 (title) |
titlecontains(java.lang.string title) |
只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑
如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。
public static void testwait2(webdriver driver) { driver.get("e:\\stashfolder\\huoli_28@hotmail.com\\stash\\tank-moneyproject\\浦东软件园培训中心\\我的教材\\selenium webdriver\\set_timeout.html"); webdriverwait wait = new webdriverwait(driver, 20); wait.until(expectedconditions.presenceofelementlocated(by.cssselector(".red_box"))); webelement element = driver.findelement(by.cssselector(".red_box")); ((javascriptexecutor)driver).executescript("arguments[0].style.border = \"5px solid yellow\"",element); }
以上就是对java selenium 等待页面加载的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
上一篇: Python的Django框架中if标签的相关使用
下一篇: MySQL注入绕开过滤的技巧总结