java selenium智能等待页面加载完成示例代码
javaselenium 智能等待页面加载完成
我们经常会碰到用selenium操作页面上某个元素的时候,需要等待页面加载完成后,才能操作。 否则页面上的元素不存在,会抛出异常。
或者碰到AJAX异步加载,我们需要等待元素加载完成后,才能操作
selenium中提供了非常简单,智能的方法,来判断元素是否存在.
阅读目录
- 实例要求
- 隐式等待
- 显式等待
实例要求
实例:set_timeout.html下面的html代码, 点击click按钮5秒后,页面上会出现一个红色的div快,我们需要写一段自动化脚本智能的去判断这个div是否存在,然后把这个div然后高亮。
<html> <head> <title>SetTimeout</title> <style> .red_box{background-color:red;width=20%;height:100px;border:none;} </style> <script> functionshow_div(){ setTimeout("create_div()",5000); } functioncreate_div(){ d=document.createElement('div'); d.className="red_box"; document.body.appendChild(d); } </script> </head> <body> <buttonid="b"onclick="show_div()">click</button> </body> </html>
隐式等待
WebDriverdriver=newFirefoxDriver(); driver.get("file:///C:/Users/Tank/Desktop/set_timeout.html"); driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS); WebElementelement=driver.findElement(By.cssSelector(".red_box")); ((JavascriptExecutor)driver).executeScript("arguments[0].style.border=\"5pxsolidyellow\"",element);
其中
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
意思是,总共等待10秒,如果10秒后,元素还不存在,就会抛出异常 org.openqa.selenium.NoSuchElementException
显式等待
显式等待使用ExpectedConditions类中自带方法,可以进行显试等待的判断。
显式等待可以自定义等待的条件,用于更加复杂的页面等待条件
等待的条件 WebDriver方法 页面元素是否在页面上可用和可被单击 elementToBeClickable(Bylocator) 页面元素处于被选中状态 elementToBeSelected(WebElementelement) 页面元素在页面中存在 presenceOfElementLocated(Bylocator) 在页面元素中是否包含特定的文本 textToBePresentInElement(Bylocator) 页面元素值 textToBePresentInElementValue(Bylocator,java.lang.Stringtext) 标题(title) titleContains(java.lang.Stringtitle)
只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑
如果超过设定的最大显式等待时间阈值,这测试程序会抛出异常。
publicstaticvoidtestWait2(WebDriverdriver) { driver.get("E:\\StashFolder\\huoli_28@hotmail.com\\Stash\\Tank-MoneyProject\\浦东软件园培训中心\\我的教材\\SeleniumWebdriver\\set_timeout.html"); WebDriverWaitwait=newWebDriverWait(driver,20); wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".red_box"))); WebElementelement=driver.findElement(By.cssSelector(".red_box")); ((JavascriptExecutor)driver).executeScript("arguments[0].style.border=\"5pxsolidyellow\"",element); }
以上就是对Javaselenium等待页面加载的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!