selenium 显示等待,隐士等待
来源:互联网 发布:linux 查看进程状态 编辑:程序博客网 时间:2024/06/02 08:41
显式等待是,先于代码的继续执行,而定义的等待某个条件发生的代码。最糟糕的情况是Thread.sleep(),设置条件为一个需要等待的精确时间段。有一些提供的便利方法,可以帮助你编写代码仅仅等待需要的时间。WebDriverWait与ExpectedCondition的结合是一种可以完成这个目标的方式。隐含等待,其实就相当于设置全局的等待,在定位元素时,对所有元素设置超时时间。一般来说,我们使用显式等待。在判断新浪微博文章删除问题时。遇到点问题。由于会跳转两次。脚本页面>错误页面>注册页面。等待的话。。随时可能获取三个页面中的其中一个页面的信息。所以用显示等待。大约在第二个页面时,获取元素判断、
1.显式等待
显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.
如:
1
new
WebDriverWait(driver,
15
).until(
2
ExpectedConditions.presenceOfElementLocated(By.cssSelector(
"css locator"
))
3
);
这里,15是要等待的秒数.如果没有满足until()方法中的条件,就会始终在这里wait 15秒,依然找不到,就抛出异常.
也可以这样写:
01
WebDriver driver =
new
FirefoxDriver();
02
driver.get( www.baidu.com
);
03
WebElement e = (
new
WebDriverWait( driver,
10
)) .until(
04
new
ExpectedCondition< WebElement>(){
05
@Override
06
public
WebElement apply( WebDriver d) {
07
return
d.findElement( By.id(
"id locator"
));
08
}
09
}
10
);
这样就通过回调函数,直接获得了这个WebElement.也就是页面元素.
如果只是仅仅想判断页面是不是加载到某个地方了,就可以用第一种方法; 但如果需要得到某个WebElement,两种方式都可以,只是第一种方式还需要再多一步获取的操作.
1
Wait w =
new
Wait(){
2
@Override
3
public
boolean
until() {
4
return
webElement.isDisplayed();
5
}
6
};
2.隐式等待
1
driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);
隐式等待, 此处的隐式等待是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间, 一些人对此处有误解,认为是让Driver等一段时间, 确实某些时候能让Driver等一段时间, 但是影响是全局的,每次Driver执行 找不到元素都会等待此处设置的时间, 假设某处将此值设置的太长,必须在执行完成之后还原回来,否则判断一个元素是否存在的时候,就会遇到很坑爹的问题。 改进后的方法如下:
WebDriver会进行一个隐式等待,但参数只有时间,这就导致我需要什么元素出现,我不一定能等到它,
private boolean isElementPresent(By by) {
try {
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
得不到某个元素,我们就延迟一下...
3.线程休眠
1
Thread.sleep()
- selenium 显示等待,隐士等待
- selenium显示等待与隐士等待的区别
- 【Selenium】9显示等待、隐式等待
- Selenium--显示等待和隐式等待
- [selenium] selenium+java+testNG 显示等待
- [selenium] selenium+java+TestNG 自定义显示等待
- Selenium之等待函数--强制等待,显示等待,隐式等待
- Selenium显示等待和隐式等待的区别
- Selenium控制流程(显示等待与隐式等待)
- selenium 的显示等待与隐式等待
- selenium--全局等待,智能等待
- Selenium的延迟等待
- Selenium的延迟等待
- Selenium的延迟等待
- Selenium的延迟等待
- Selenium的延迟等待
- Selenium的延迟等待
- Selenium的延迟等待
- S3C6410 MemoryMap学习
- selenium版本问题
- Intel为Google的物联网平台Brillo推出开发板Edison
- selenium 加载插件奇怪问题
- 从jar 包中读取文件,并且复制到jar包的目录中
- selenium 显示等待,隐士等待
- Selenium Grid
- Java命令的同时添加依赖jar包及参数
- Tomcat服务器配置,详解
- [题目转自http://www.33iq.com/]趣味数学
- 分布式计算任务自动部署
- JPPF并行计算框架类加载机制研究
- java 小结 (三)
- 通过URLClassLoader实现动态加载jar文件