Selenium(Java)-显式等待和隐式等待

news/2024/7/16 9:19:59

https://blog.csdn.net/yanhongyu315/article/details/80701005

在自动化测试中,有时你需要等待一个任务结束后才能进行下一个任务,所以两个任务之间就需要间隔一段等待时间,而Selenium提供了两种方法,在我们编写自动化测试代码时,我们最好不要使用Thread.Sleep(),因为这种方式需要等待确定的时间。

一、显式等待

WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
WebElement element = (new WebDriverWait(driver,5)).until(ExpectedConditions.presenceOfElementLocated(By.id("kw")));

上面第三条语句表示,在0-5s中去定位id为“kw”的元素,WebDriverWait默认每500ms就调用一次ExpectedCondition直到定位成功或者时间截止,ExpectedCondition的返回值要么为true要么为不为空的对象,在规定时间内若没有定位成功元素,则until()会抛出org.openqa.selenium.TimeoutException 。
二、隐式等待

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://www.baidu.com");
WebElement element1 = ((ChromeDriver) driver).findElementById("kw");

上面第一条语句表示,如果元素不是马上就能定位成功,则WebDriver会在5s时间内去搜索DOM定位元素,这个时间一旦设置后它的范围就是WebDriver的整个生命周期,如果在规定时间内没有定位成功,则会抛出org.openqa.selenium.NoSuchElementException。

【备注】显示和隐式最好不要混用,混用的话可能会造成不可预估的等待时间,比如说设置了隐式等待10s,显示等待15s,可能在20s后就会发生超时
               需要特别说明的是:隐性等待对整个driver的周期都起作用,所以只要设置一次即可

转载于:https://www.cnblogs.com/person008/p/10980168.html


http://www.niftyadmin.cn/n/3842931.html

相关文章

Windows图标:有一些你未必知道的东西

有一天,我的程序在任务栏的应用程序中看起来是这样的很奇怪,我的图标明明不是这样的,在资源管理器的文件夹里面,我的图标能够正常显示,在桌面的任务栏里,也能正常的显示,唯独在任务管理器里显示…

工具篇-Java中的设计模式积累(二)

------------------------------------------行为型设计模式 1. 模版模式 为什么有模版模式: 定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现&#xf…

64位2003与ASP.NET 1.1

去客户现场布署系统。 服务器是64位的2003,可系统是.net 1.1的, 新建网站后,网站的ASP.NET版本里面没有1.1的选项。 安装并注册.net 1.1后,网站属性里没有ASP.NET的选项了。 服务器上以前的一个2.0的网站和这个新系统都可以运行。…

fatal: remote origin already exists.

解决方法: 先删除, 再添加 1. git remote rm origin 2. git remote add origin https://github.com/zjulanjian/eshop.git 3. git push -u origin master转载于:https://www.cnblogs.com/zjulanjian/p/11118915.html

C语言实验作业9

实验目的&#xff1a;1、掌握二维数组的使用方法。 2、掌握用二维数组表示杨辉三角的方法。 实验题目&#xff1a;输出杨辉三角。 实验代码&#xff1a; /*杨辉三角*/#include<stdio.h>int main(){ int i,j,n; int a[100][100]; printf("输入n行:"); /*输入杨辉…

python 进程池2 - Pool相关函数

python自2.6开始提供了多进程模块multiprocessing&#xff0c;进程池使用multiprocessing.pool&#xff0c;pool的构造如下&#xff1a; multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]]) processes表示pool中进程的数目&#xff0c;默认地…

python 爬虫之requests爬取页面图片的url,并将图片下载到本地

大家好我叫hardy 需求&#xff1a;爬取某个页面&#xff0c;并把该页面的图片下载到本地 思考&#xff1a; img标签一个有多少种类型的src值&#xff1f;四种&#xff1a;1、以http开头的网络链接。2、以“//”开头网络地址。3、以“/”开头绝对路径。4、以“./”开头相对路径。…

CF232E Quick Tortoise , Fzoj 3118

这一题由于数据较多&#xff0c;我们考虑离线处理。 分治。对于两个点s&#xff0c;t&#xff0c;如果起点在mid这条横线上方&#xff0c;终点在下方&#xff0c;那么它必定会穿过mid这条线。所以只要s可以到mid上一点x&#xff0c;x可以到t&#xff0c;st就是安全的。 用bitse…