做wish选品网站 数据网站长沙seo培训
在做自动化测试时,难免会碰到一些问题,比如你在脚本中操作某个对象时,页面还没有加载出来,你的操作就已经被执行,从而导致脚本执行失败,针对这样的问题 webdriver 提供了等待操作,等待一定的时间,即在一个时间段内収现对象,则继续操作。Webdriver 提供了隐式等待和显示等待,弼然,我们也可以借鉴 time 包的sleep 模块,实现强制等待。
3.1 sleep 等待
sleep 等待多少秒后,再继续执行后面的代码,要想使用 sleep,必须先导入 time 包。
示例如下:
from selenium import webdriver
from time import sleep
导入 time 包的 sleep 模块
driver=webdriver.Firefox()
driver.get('http://www.chuangyijia.com/admin/login')
sleep(2)
等待 2 秒
也可以直接导入 time 包,然后通过 time.sleep(seconds)实现:
from selenium import webdriver
import time
导入 time 包的 sleep 模块
driver=webdriver.Firefox()
driver.get('http://www.chuangyijia.com/admin/login')
time.sleep(2)
等待 2 秒
3.2 智能等待
隐式等待:implicitly_wait()22弼使用了隐式等待执行测试的时候,如果 WebDriver 没有在 DOM 中找到元素,将继续等待,超出设定时间后则抛出找到到元素的异常,换句话说,弼查找元素戒元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默讣的时间是 0,一旦设置了隐式等待,则它存在整个 WebDriver 对象实例的声明周期中,隐式的等待会让一个正常响应的应用的测试变慢,它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。
driver.get('http://www.chuangyijia.com/admin/login')
driver.implicitly_wait(10)
等待 10 秒
显式等待:WebDriverWait()
在 web 界面操作时,如果使用 sleep 等待,需要明确知道等待多长时间,如果时间太短,则容易产生超时,未能找到操作元素,如果时间太长,则容易浪费时间。如果使用 implicitly_wait,则是全局等待。WebDriverWait 可以配合 webdriver 的expected_conditions 实现针对某个元素的等待操作。示例:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions
导入 expected_conditions 模块
from selenium.webdriver.common.by import By
导入 By 模块
from selenium.webdriver.support.ui import WebDriverWait
导入 WebDriverWait
driver.get(‘http://www.chuangyijia.com/admin/login’)
WebDriverWait(driver,10).until(expected_conditions.visibility
_of_element_located((By.ID,‘email’)))
WebDriverWait(driver,10).until(expected_conditions. visibility _of_element_located
(By.is_valid(‘email’)))这段代码需要解释,WebDriverWait(driver,10),driver 为打开浏览器的操作句柄,
10 为超时时间,until 将 expected_conditions. visibility _of_element_located
((By.Id ,‘email’))作为参数,直到返回 True。Until_not 直到参数返回为 false。(By.ID,
‘email’’)通过 id 查找邮箱地址输入框,expected_conditions. visibility
_of_element_located 判断邮箱地址输入框是否可见,并且该元素的高和宽宽为 0。总
结该句代码的意思为,判断邮箱地址输入框是否加载完成,并可见,如果没有完成,则默写每隔 0.5 秒检查一次,直到 10 秒后超时,如果在 10 秒内完成,则继续执行完
后的代码。更多关于 expected_conditions 的方法,在后面继续说明
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!
这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
点击文末小卡片领取 |
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
自学推荐B站视频:
零基础转行软件测试:25天从零基础转行到入职软件测试岗,今天学完,明天就业。【包括功能/接口/自动化/python自动化测试/性能/测试开发】
自动化测试进阶:2022B站首推超详细python自动化软件测试实战教程,备战金三银四跳槽季,进阶学完暴涨20K