2.2.6 WebDriver API及对象识别技术(二)

本文详细介绍了在Selenium UI自动化测试中如何使用强制等待、隐式等待和显式等待,包括各自的优缺点和使用场景。同时,文章讲解了WebDriverWait的expected_conditions使用方法,并探讨了文件上传和下载的处理,特别是Firefox的配置和AutoIT在文件上传中的应用。
摘要由CSDN通过智能技术生成

概述

       在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果不做任何处理的话,代码会由于没有找到元素而报错。这时我们就要用到wait,而在Selenium中,我们可以用到一共三种等待,每一种等待都有自己的优点或缺点,如何选择最优的等待方式。

一.强制等待

使用方法:sleep(X),等待X秒后,进行下一步操作。

  • 第一种也是使用最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作,都必须等X秒的时间。

  • 缺点:不能准确把握需要等待的时间(有时操作还未完成,等待就结束了,导致报错;有时操作已经完成了,但等待时间还没有到,浪费时间),如果在用例中大量使用,会浪费不必要的等待时间,影响测试用例的执行效率。

  • 优点:使用简单,可以在调试时使用。

  • 示例:打开登录页面,等待3秒,进行登录操作,如果3秒内登录页面没有加载完,下一步操作就会报错。

 

二.隐式等待

使用方法:implicitly_wait(X),在X时间内,页面加载完成,进行下一步操作。

  • 第二种方法是隐形等待,其设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步操作。

  • 缺点:使用隐式等待,程序会一直等待整个页面加载完成,才会执行下一步操作;但有时候页面想要的元素早已经加载完成了,但是因为网页上个别元素还没有加载完成,仍要等到页面全部完成才能执行下一步,使用也不是很灵活。

  • 优点:隐性等待对整个driver的周期都起作用,所以只要设置一次即可。

  • 示例:打开登录页面,等待页面加载完成后,如果30秒内,页面加载完成,就进行登录操作,不再继续等待,如果30秒内登录页面没有加载完,下一步操作就会报错。

三.显式等待

  • WebDriverWait(显示等待)

  • WebDriverWait是selenium提供得到显示等待模块引入路径

  • from selenium.webdriver.support.wait import WebDriverWait

  • WebDriverWait参数

  1. driver: 传入WebDriver实例,即我们上例中的driver

  2. timeout: 超时时间,等待的最长时间

  3. poll_frequency: 调用until或until_not中的方法的间隔时间,默认是0.5秒

  4. ignored_exceptions: 忽略的异常,如果在调用until或until_not的过程中抛出这个元组中的异常, 则不中断代码,继续等待,如果抛出的是这个元组外的异常,则中断代码,抛出异常。默认只有NoSuchElementException。

这个模块中,一共只有两种方法until与until_not

  • method: 在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zemuerqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值