当前位置: 首页 > news >正文

【UI自动化测试】9_web自动化测试 _元素等待

文章目录

  • 一、元素等待
  • 二、隐式等待(重要)
    • 2.1 隐式等待-案例
    • 2.2 隐式等待-总结
  • 三、显式等待 (移动端测试多用)
    • 3.1 显式等待方法
    • 3.2 显式等待-案例
  • 四、强制等待
  • 五、等待对比

一、元素等待

元素等待:在定位页面元素时如果未定位到, 会在指定时间内一直等待的过程;

1、什么是等待?

代码执行过程中,第一次未找到元素,先不抛出异常。激活等待时间,在等待过程中如果找到元素就执行。

2、 为什么要等待?

由于网络速度慢 或 电脑配置低 或者 服务器处理请求慢 等原因,导致元素未加载出来,而代码已执行,会触发异常。

3、元素等待类型

- 隐式等待 - 显式等待 - 强制等待-->time.seep(秒) 影响运行效率

二、隐式等待(重要)

隐式等待:

  • 定位元素时, 如果能定位到元素则直接返回该元素, 不触发等待;
  • 如果不能定位到该元素, 则间隔一段时间后再去定位元素;
  • 如果在达到最大时长时还没有找到指定元素, 则抛出元素不存在的异常NoSuchElementException 。
-说明:隐式等待为全局设置(只需要设置一次,就会作用于所有元素)-方法:driver.implicitly_wait(timeout)# (timeout:为等待最大时长,单位:秒)-提示:在项目中,如果未封装自动化框架时,推荐使用。

2.1 隐式等待-案例

fromseleniumimportwebdriverfromtimeimportsleepfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.waitimportWebDriverWait# 1、获取浏览器驱动对象driver=webdriver.Chrome()# 2、将浏览器 最大化driver.maximize_window()# 3、设置隐式等待10秒。driver.implicitly_wait(10)# 打开一个网页driver.get("http://www.baidu.com")# 定位输入框--给一个错误的id,不能找到,如果直接抛出异常,说明等待失效。如果在设置指定时长以外抛出说明等待生效。# driver.find_element_by_css_selector("#chat-textarea").send_keys("你爱我")driver.find_element(By.CSS_SELECTOR,"#chat-textarea").send_keys("你爱我")# 暂停 2sleep(2)# 关闭驱动对象driver.quit()

2.2 隐式等待-总结

方法:driver.implicitly_wait(30)# 一般情况下设置30秒特色:1.针对所有元素生效。2.一般情况下为前置必写代码(1.获取浏览器驱动对象;2.最大化浏览器;3.设置隐式等待)

三、显式等待 (移动端测试多用)

显式等待:

  • 定位指定元素时, 如果能定位到元素则直接返回该元素, 不触发等待;
  • 如果不能定位到该元素, 则间隔一段时间后再去定位元素;
  • 如果在达到最大时长时还没有找到指定元素, 则抛出超时异常TimeoutException 。
说明:针对单个元素生效,可以修改查找频率和超时时间。 特点︰查找并返回元素

3.1 显式等待方法

在Selenium中把显式等待的相关方法封装在WebDriverWait类中 。

fromselenium.webdriver.common.byimportBy# 1.导包 等待类fromselenium.webdriver.support.waitimportWebDriverWait# 2.创建显示等待类对象WebDriverWait(driver,timeout,poll_frequency=0.5)1).driver: 浏览器驱动对象2).timeout: 超时的时长,单位:秒3).poll_frequency: 检测间隔时间,默认为0.5# 3.调用方法until(method): 直到...1).method: 函数名称, 该函数用来实现对元素的定位2).一般使用匿名函数来实现:lambdax:x.find_element(By.CSS_SELECTOR,"#chat-textarea")3)x:x为driver,它是WebDriverWait类将传入的driver赋值给类self._driver,until方法调用了self._driver;# 4. 整体实现,返回的一个元素。element=WebDriverWait(driver,10,1).until(lambdax:x.find_element(By.CSS_SELECTOR,"#chat-textarea"))element.send_keys("你爱我")

3.2 显式等待-案例

fromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.waitimportWebDriverWait# 1、获取浏览器驱动对象driver=webdriver.Chrome()# 2、将浏览器 最大化driver.maximize_window()# 打开一个网页driver.get("http://www.baidu.com")""" # 定位输入框--给一个错误的id,不能找到,如果直接抛出异常,说明等待失效。如果在设置指定时长以外抛出说明等待生效。 # 实例化WebDriverWait()并调用until方法 # 注意:调用until方法返回的一定是一个元素 """# 显示等待 -> 返回查找到的元素# 定位延时加载输入框,当找不到时抛出异常并捕获异常,找到元素则直接输入try:el=WebDriverWait(driver,10,0.5).until(lambdax:x.find_element(By.CSS_SELECTOR,"#chat-textarea"))# 注意:此时el 还不是元素,只有代码运行起来才是元素el.send_keys("你爱我")exceptExceptionase:print("显示等待定位超时")# 继续抛出异常raisee# 暂停 2sleep(2)# 关闭驱动对象driver.quit()""" # 获取 WebDriverWait示例对象 wait= WebDriverWait(driver,timeout=10, poll_frequency=0.5) # 获取元素 el = wait.until(lambda x:x.find_element_by_id("#chat-textarea")) # 发送内容 el.send_keys("你爱我") """

四、强制等待

  • 语法:sleep(10)
  • 提示:执行到这句必须等待10秒,不灵活。
fromtimeimportsleep sleep(10)

五、等待对比

  • 隐式等待:依赖于界面元素的加载影响。比如:第一次打开页面,有时受网络影响,页面始终处于转圈加载的状态(加载界面所有的信息),有可能定位登录按钮已经早都加载显示出来,但是其他元素还没有加载完毕(其它元素没有出来和登录按钮没有关系);登录按钮出来就想做点击,然后跳转到登录页面。
  • 原有的隐式等待受整个页面加载的影响,即使出现想要的元素,也不点击,要等待所有的元素加载完毕,这影响了测试用例运行的效率。因此要加上显示等待。

http://www.jsqmd.com/news/395103/

相关文章:

  • 简述智慧校园系统架构及各层的主要功能
  • 智慧校园平台系统:2026年教育数字化转型的核心引擎
  • 一些做独立站 SEO 的案例以及关键词技巧
  • 智慧校园系统在教学、管理、安防和生活四大场景的落地实践
  • 智慧校园系统:学校数字化转型的“关键中枢”
  • 智慧校园系统如何构建?详解其“数据驱动”的五大核心应用场景
  • 【UI自动化测试】10_web自动化测试 _frame切换、多窗口切换
  • CrossOver 26重磅升级,跟我抢先体验CrossOver 26新特性吧 - 雨林谷
  • 2026 年春节档电影推荐:口碑必看《惊蛰无声》,全家 / 爸妈 / 朋友全场景观影指南 - SFMEDIA
  • [算法]dp优化
  • 并查集 - # [POJ 1182] 食物链
  • 五大靠谱AI论文生成网站对比,助你快速完成毕业论文写作
  • 困扰于AI论文工具选择?这份专业评分的TOP5榜单可参考
  • 毕业论文用AI写作工具?这5个经过验证的网站排名最实用
  • 完整教程:【AI】AI学习笔记:翻译:langGraph 持久化执行 以及文档部分理解
  • 洛谷 P3378:[模板] 堆 ← 二叉堆
  • 论文写作AI工具如何挑?这份实测过的五大网站排名请收下
  • LabVIEW列车轴承声学成像应用
  • 高效完成论文的AI工具怎么选?精选五大优质平台排名解析
  • 基于时频自适应掩膜和形态学优化的地震数据降噪方法(MATLAB)
  • 五大优质AI论文写作网站推荐,解决你的毕业论文创作难题
  • 开源版 EMQX(集群版)搭建
  • 选AI写论文工具不用愁,权威测评的5个网站排名已整理好
  • 还在纠结论文AI写作工具?这5个高口碑网站排名帮你高效决策
  • 揭秘!提示工程架构师跨界整合案例背后的故事
  • 毕业论文AI写作工具怎么选?这份五大可靠平台排名值得收藏
  • AI原生应用架构设计:如何选择最适合的API编排方案
  • BISHI63 计算阶乘
  • AI原生应用中微服务集成的日志管理与分析方法
  • Tauri 开发环境 Prerequisites 桌面 + 移动端)