Selenium Webdriver——设置等待时间

1.隐式等待

implicitlyWait():

当使用了隐士等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常

当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0

一旦设置了隐式等待,则它存在整个 WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢,

它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

2.显示等待

WebDriverWait():webdriver的针对某个元素的明确等待(explicitly wait)

详细格式如下:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)

timeout - 最长超时时间,默认以秒为单位

poll_frequency - 休眠时间的间隔(步长)时间,默认为0.5 秒

ignored_exceptions - 超时后的异常信息,默认情况下抛NoSuchElementException 异常。

复制代码
 1     /**
 2      * 在给定的时间内去查找元素,如果没找到则超时,抛出异常
 3      * */
 4     public static void waitForElementToLoad(WebDriver driver, int timeOut, final By By) {
 5         try {
 6             (new WebDriverWait(driver, timeOut)).until(new ExpectedCondition<Boolean>() {
 7 
 8                 public Boolean apply(WebDriver driver) {
 9                     WebElement element = driver.findElement(By);
10                     return element.isDisplayed();
11                 }
12             });
13         } catch (TimeoutException e) {
14             Assert.fail("超时!! " + timeOut + " 秒之后还没找到元素 [" + By + "]");
15         }
16     }
复制代码

 

posted @   hjhsysu  阅读(5030)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示