selenium常见等待机制及其特点和使用方法

这篇具有很好参考价值的文章主要介绍了selenium常见等待机制及其特点和使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、强制等待 

2、隐式等待 

3、显示等待 


1、强制等待 

强制等待是在程序中直接调用Thread.sleep(timeout) ,来完成的,该用法的优点是使用起来方便,语法也比较简单,缺点就是需要强制等待固定的时间,可能会造成测试的时间过长。

    private static void test02() throws InterruptedException {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
        webDriver.findElement(By.cssSelector("#su")).click();
        webDriver.findElement(By.cssSelector("#kw")).clear();
        sleep(3000);
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("前端vue");
        webDriver.findElement(By.cssSelector("#su")).click();

    }

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具引入等待的原因是很多时候,程序运行的速度是大于网页页面的渲染速度的,所以需要引入等待机制。 

2、隐式等待 

如果等待时间是1天,使用强制等待就会等待1天的时间,对于隐式等待来说,它最多等待1天。因为如果我们在这一天内,如果获取了页面上的元素,那么隐式等待就会不再等待下去,而是直接开始执行后续的代码了。 如果超过1天还没有获取到页面元素,那么就会报错。

使用的语句:

webDriver.manage().timeouts().implicitlyWait(1, TimeUnit.DAYS);

 其中使用隐式等待需要使用驱动中的manage方法,然后调用timeouts方法的implicitlyWait方法。

其中比较重要的就是implicitlyWait了,可以看一下其源码:

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

可以看到implicitlyWait方法的参数一个是long类型,也就是指定的数字,后面的是TimeUnit类型,也就是指定单位。

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

这里我们用实际代码测试一下:

private static void test02() throws InterruptedException {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
        webDriver.findElement(By.cssSelector("#su")).click();
        webDriver.findElement(By.cssSelector("#kw")).clear();
        //sleep(3000);
        //隐式等待1天
        webDriver.manage().timeouts().implicitlyWait(1, TimeUnit.DAYS);
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("前端vue");
        webDriver.findElement(By.cssSelector("#su")).click();

    }

我们设置的等待一天,但是对于隐式等待来说一下程序就完成了。因为等待后面的元素,直接从页面获取得到,所以无需等待1天即可完成测试。

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

3、显示等待 

举个例子,比如我们要在百度搜索的首页来判断最下方的元素是否是超链接,是否可以点击 

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

点开该方法,可以看到有很多用来判断元素的方法 ,其中我们要使用的是判断元素是否可以被点击,所以使用elementToBeClickable方法

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

    private static void test07() {
        //创建驱动
        WebDriver webDriver=new ChromeDriver();
        //打开百度
        webDriver.get("https://www.baidu.com/");
        //判断元素是否可以被点击
        WebDriverWait webDriverWait=new WebDriverWait(webDriver,3000);
    webDriverWait.until(ExpectedConditions.elementToBeClickable
                (By.cssSelector("#bottom_layer > div > p:nth-child(7) > a")));

    }

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具没有报错,说明是满足条件的,如果我们设置了一个不存在的元素,等到设置的等待时间过了,就会报错了NoSuchElementException

selenium常见等待机制及其特点和使用方法,测试,selenium,测试工具

总结一下:

显示等待使用语法比较复杂,但是可以指定某一个元素进行等待,减少了整个测试等待的时间。文章来源地址https://www.toymoban.com/news/detail-634423.html

到了这里,关于selenium常见等待机制及其特点和使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 485、CAN、单总线、SPI、I2C的概念,特点,协议,使用方法及通信方式,还有它们之间的区别

    1. 485:485(一般称作 RS485/EIA-485)是隶属于 OSI 模型物理层的电气特性规定为 2 线,半双工,多点通信的标准。它的电气特性和 RS-232 大不一样。用缆线两端的电压差值来表示传递信号。 2. CAN:CAN,全称为“Controller Area Network”,即控制器局域网,是一种多主方式的串行通讯总

    2024年02月10日
    浏览(37)
  • Java字符串详解:概念、特点与常见的使用场景

    Java字符串是开发中经常使用到的一种数据类型,使用它可以处理文本、URL、文件路径等多种类型的数据。本文将对Java字符串的概念、特点以及常见使用场景进行详细解释。本文将分为以下几个部分: String的概念和特点 Java字符串常量池 字符串的不可变性 使用equals()方法比较

    2024年02月03日
    浏览(31)
  • Docker部署nextcloud及其使用方法

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似

    2024年02月10日
    浏览(23)
  • python 面向对象编程的特点 - 封装 - 继承(经典类、新式类) - 多态 - 静态方法、类方法 - 下划线的使用 - 回合制攻击游戏实验

    目录 面向对象编程的特点: 封装:封装是将数据和操作(方法)封装在一个对象中的能力 继承:继承是指一个类(子类)可以继承另一个类(父类)的属性和方法。 我们为什么需要继承呢? 父类/基类 = ATM 子类/派生类= ChinaATM/ICBCATM ATM系统父类子类讲解代码: 经典类和新式

    2024年02月15日
    浏览(35)
  • 【Linux】什么是.bashrc,以及其使用方法

    经常在配置linux各种环境的时候,遇到对bashrc的配置。当时也只是机械地跟着教程,一步步输入指令;遇到的次数多了,想知道.bashrc究竟是何方神圣。于是整理了下其主要功能以及使用方法。 .bashrc,属于一种系统隐藏文件,常常可见于 macOS 或者主流的 Linux 发行版。如果你

    2024年03月14日
    浏览(32)
  • PCB封装下载网站推荐及其详细使用方法

    本文汇总了当下比较流行的几个原理图符号,PCB封装与对应的3D模型下载网站,网站均支持多种流行的EDA软件,如AD, Cadence, PADS等。 因为我使用的是Cadence,版本是16.6和17.4,对应的原理图工具是Orcad,PCB工具是Allegro,所以在使用网站时均以Cadence为示例。 当下最流行的三个PC

    2024年02月05日
    浏览(84)
  • Java中indexOf() 方法 总计及其日常使用

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2023年04月25日
    浏览(31)
  • 微信小程序中的所有生命周期钩子函数及其使用方法

    onLaunch(options) :小程序初始化时触发,全局只触发一次。 onShow(options) :小程序启动或从后台进入前台显示时触发。 onHide() :小程序从前台进入后台时触发。 onError(error) :小程序发生脚本错误或 API 调用失败时触发。 onLoad(options) :页面加载时触发,可以获取页面参数。 onS

    2024年02月09日
    浏览(35)
  • lambda常见使用方法

    前言 之前在携程实习,遇到了lambda表达式,最近逛b站,刚好看到了。顺手整理一下。参考链接 介绍 lambda是一种提高生产力的一种书写代码的方式。 代码中有很多的箭头,箭头左边是参数。例如,遍历的时候,每一个item,然后右边是要进行的操作。 代码中用到了很多的“

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

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

    2024年02月05日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包