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 等待页面加载的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
您可能感兴趣的文章:- Java selenium截图操作的实现
- selenium+java+chrome环境搭建的方法步骤
- java+selenium实现自动化打开页面的方法
- selenium+java破解极验滑动验证码的示例代码
- Java selenium处理极验滑动验证码示例
- java selenium 操作弹出窗口示例代码
- java selenium操作弹出对话框示例讲解
- java selenium 操作浏览器实例
- selenium+java中用js来完成日期的修改