selenium的三种等待方式(强制等待,隐式等待,显示等待)

这篇具有很好参考价值的文章主要介绍了selenium的三种等待方式(强制等待,隐式等待,显示等待)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.强制等待(无条件等待)

2.隐式等待

3.显示等待


有时候做自动化测试,需要进行等待,因为下一步的操作依赖于上一步的结果,但是程序执行的很快,有时候页面还未加载完成就进行了下一步的操作,很容易就出现错误,例如像【NO SuchElement Exception】有时候就是因为这个原因造成的,所以我们就需要使用等待来的等待上一个页面的加载完成之后,在进行下一步的操作,selenium中一共有三种等待方式,下面我们来一一讲解:

1.强制等待(无条件等待)

使用方法:time.sleep(num)

num的单位为秒,设置多少秒,页面就会死等多少秒,这个方法很容易使线程挂掉,程序抛出异常,所以要慎用

例如:打开百度页面,强制等待五秒

public class TestSleep {
    public static void main(String[] args) throws InterruptedException {
        // 创建一个浏览器取得
        ChromeDriver driver = new ChromeDriver();
        // 打开百度网页
        driver.get("https://www.baidu.com");
        // 强制等待五秒
        sleep(5000);
        // 在搜索框输入强制等待
        driver.findElement(By.cssSelector("#kw")).sendKeys("强制等待");
        // 点击百度一下
        driver.findElement(By.cssSelector("#su")).click();
    }
}

2.隐式等待

使用方法:

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

例如:在百度页面搜索隐式等待,隐式等待搜索结果,然后点击第一条结果

    public static void test02() {
        // 创建一个浏览器取得
        ChromeDriver driver = new ChromeDriver();
        // 打开百度网页
        driver.get("https://www.baidu.com");
        // 在搜索框输入隐式等待
        driver.findElement(By.cssSelector("#kw")).sendKeys("隐式等待");
        // 点击百度一下
        driver.findElement(By.cssSelector("#su")).click();
        // 隐式等待5s
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        // 点击进入第一条结果
        driver.findElement(By.cssSelector("#\\31  > div > div:nth-child(1) > h3 > a")).click();

    }

在规定的时间范围内,一直等待元素的出现就结束等待,否则到达等待数据,就会抛出一个异常【NO SuchElement Exception】,然后脚本停止运行

比如在上面的测试代码中,如果不加隐式等待,就会抛出一个异常如下:

selenium的三种等待方式(强制等待,隐式等待,显示等待),软件测试,selenium,测试工具

而且,隐式等待作用于webdriver的整个生命周期,只要没有退出浏览器,隐式等待一直存在,所以隐式等待的代码位置可以随意放置

优点:节省了大量等待时间,相比于强制等待来说

缺点:需要等待页面元素全部加载完成,才能执行下一步,还是会有额外浪费的时间

注意:

  • 隐式等待作用不了非HTML页面的元素(比如弹窗)
  • 并且隐式等待不要和显示等待同时使用(比如你在项目中使用了隐式等待,但是你有需要处理弹窗,那么就只能使用强制等待了)

3.显示等待

这里我们需要使用到selenium中的一个类ExpectedConditions以及until方法

显示等待就是如果在规定的时间内,没有找到元素,就会报异常【NO SuchElement Exception】

优点:针对其中某一个元素来等待,极大地降低了等待时间(相比于隐式等待需要等待整个页面的情况)

缺点:写法有点复杂

我们来对比一下显示等待和隐式等待分别所需要的时间

打开百度网页,在输入框搜索隐式等待vs显示等待,然后点击百度一下进行搜索,分别使用显示等待和隐式等待,等待页面上的图片按钮出现,然后点击图片按钮

1.隐式等待:

    public void test03() {
        // 创建一个浏览器取得
        ChromeDriver driver = new ChromeDriver();
        // 打开百度网页
        driver.get("https://www.baidu.com");
        // 在搜索框输入隐式等待VS显示等待
        driver.findElement(By.cssSelector("#kw")).sendKeys("隐式等待VS显示等待");
        // 点击百度一下
        driver.findElement(By.cssSelector("#su")).click();
        // 隐式等待50s
        driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
        // 点击图片按钮
        driver.findElement(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic")).click();
        driver.quit();
    }

2.显示等待

    public  void test04() {
        // 创建一个浏览器取得
        ChromeDriver driver = new ChromeDriver();
        // 打开百度网页
        driver.get("https://www.baidu.com");
        // 在搜索框输入隐式等待VS显示等待
        driver.findElement(By.cssSelector("#kw")).sendKeys("隐式等待VS显示等待");
        // 点击百度一下
        driver.findElement(By.cssSelector("#su")).click();
        // 显示等待50s
        WebDriverWait wait = new WebDriverWait(driver, 50);
        wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic")));
        // 点击图片按钮
        driver.findElement(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic")).click();
        driver.quit();
    }

selenium的三种等待方式(强制等待,隐式等待,显示等待),软件测试,selenium,测试工具

从运行结果中就可以看出来,相较于隐式等待需要等待整个页面的加载,显示等待只需要等待图片这个按钮的出现即可,大大的提高了时间效率文章来源地址https://www.toymoban.com/news/detail-606508.html

到了这里,关于selenium的三种等待方式(强制等待,隐式等待,显示等待)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试/测试开发/全日制/测试管理丨selenium 经典的三种等待方式

    在Selenium中,等待是一种重要的技术,用于处理页面加载和元素查找的时间差异。以下是Selenium中经典的三种等待方式: 隐式等待: 描述:  隐式等待是在查找所有元素时设置的全局等待时间。一旦设置,它将在整个测试执行期间都起作用。 用法:  设置隐式等待的代码通常

    2024年01月17日
    浏览(33)
  • selenium的三种等待方式

    设置固定休眠时间,单位为秒。 由python的time包提供, 导入 time 包后就可以使用。 缺点:不智能,使用太多的sleep会影响脚本运行速度。 使用方法:time.sleep(delay) 使用举例:打开百度,强制等待5秒 (无条件等待,在一个时间段内等待) 一次设置,全局生效。 不要当作固定等待

    2023年04月13日
    浏览(32)
  • Appium/Selenium+Java的三种等待方式

    参考: java-selenium三种等待方式 Selenium+Java(六)Selenium 强制等待、显式等待、隐实等待 强制等待是利用time模块的sleep方法来实现,最简单粗暴的等待方法。 缺点:不能准确把握需要等待的时间(有时候操作未完成,等待就结束了,导致报错;有时候操作已经完成了,但时间

    2024年02月05日
    浏览(45)
  • Selenium 3和JUnit 5中的显示等待与隐式等待

    目录 显示等待(Explicit Wait) 什么是显示等待? 如何实现显示等待? 显示等待条件 隐式等待(Implicit Wait) 什么是隐式等待? 如何实现隐式等待? 显示等待和隐式等待的区别 强制等待 在Selenium自动化测试中,等待是一个至关重要的概念。网页加载速度、元素的可见性以及

    2024年02月09日
    浏览(23)
  • web自动化之基础内容二(全网最详细,selenium获取断言信息,显示等待和隐式等待,xpath高级语法)-第二天

    获取到的断言信息就是实际结果 预期结果使我们确定的,直接写在代码中的 而实际结果是无法确定的,所以需要用一些方法去获取 代码示例 场景:当我们加载页面的时候,一些元素是需要时间的 就有可能发生,代码执行到了,而元素没有被加载出来 此时就会出现找不到元

    2024年01月17日
    浏览(30)
  • Web自动化测试进阶:网页中难点之等待机制 —— 强制等待,隐式等待

    为什么要添加等待 避免页面未渲染完成后操作,导致的报错 经常会遇到报错:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {\\\"method\\\":\\\"xpath\\\",\\\"selector\\\":\\\"//*[text()=\\\'个人中心\\\']\\\"} 页面还在加载时,就在进行查收元素,此时元素还没显示加载出来,而报

    2024年02月05日
    浏览(57)
  • 【selenium】三种等待方式

    time模块中的sleep()方法,程序执行到此代码时强制等待一段时间。 time.sleep(time),传入具体的等待时间time 可以控制等待的具体时间,一般在调试代码时使用 无法准确把握需要等待的时间 如果设置时间过短,操作还未完成,等待时间已到,会导致测试用例执行报错,影响测试

    2024年02月03日
    浏览(28)
  • Selenium:三种等待方式

    目录 一、显示等待 二、隐式等待 三、强制等待 UI自动化测试,大多都是通过定位页面元素来模拟实际的生产场景操作。但在编写自动化测试脚本中,经常出现元素定位不到的情况,究其原因,无非两种情况:1、有frame;2、没有设置等待。 因为代码运行速度和浏览器加载渲

    2024年02月03日
    浏览(35)
  • selenium之三种等待方式

    1:强制等待 无条件等待,必须等待设置的时间后,再执行 使用方法:导入time库,time.sleep(sec)      sec表示多少秒,sec设置多少秒页面就会等待多少秒(死等),时间一到,继续执行下面的代码。在调试的时候很有用,但这个方法很容易让线程挂掉,使程序抛异常。 例:使

    2024年02月08日
    浏览(31)
  • python自动化测试selenium核心技术三种等待方式

    UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法定位到特定元素而报错,导致自动化测试无法顺利执行。 selenium官网手册:Waits | Selenium slenium自动化测试中,主要涉及三种等待方式:     缺点:即使网络条件较好时

    2024年04月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包