【如何学习Python自动化测试】—— 时间等待

简介: 【如何学习Python自动化测试】—— 时间等待

3 、 时间等待

     在做自动化测试时,难免会碰到一些问题,比如你在脚本中操作某个对象时, 页面还没有加载出来,你的操作语句已经被执行,从而导致脚本执行失败,针对这样的问题 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()

     当使用了隐式等待执行测试的时候,如果 WebDriver 没有在 DOM 中找到元素, 将继续等待,超出设定时间后则抛出找不到元素的异常 ,换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是 0 , 一旦设置了隐式等待,则它存在整个 WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢,它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。

    ==注意:==隐式等待是在webdriver全局设置的,只需要设置一次即可在所有的操作中生效,它会在执行每个操作时,都会等待一定的时间,等待页面加载完成,如果在规定时间内发现了待操作元素,则继续执行操作。如果在规定时间内没有找到,则会抛出NoSuchElementException异常。

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 的方法,在后面继续说明。


相关文章
|
4天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
18 4
|
14天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
55 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
17天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
43 3
|
16天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
32 1
|
24天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
26 1
|
1月前
|
机器学习/深度学习 人工智能 架构师
Python学习圣经:从0到1,精通Python使用
尼恩架构团队的大模型《LLM大模型学习圣经》是一个系统化的学习系列,初步规划包括以下内容: 1. **《Python学习圣经:从0到1精通Python,打好AI基础》** 2. **《LLM大模型学习圣经:从0到1吃透Transformer技术底座》**
Python学习圣经:从0到1,精通Python使用
|
15天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
1月前
|
机器学习/深度学习 人工智能 架构师
|
1月前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
75 0
精心整理python测试小技巧:第十六节
精心整理python测试小技巧:第十六节

热门文章

最新文章

下一篇
无影云桌面