【UI自动化测试】9_web自动化测试 _元素等待 📅 发布时间:2026/7/12 15:03:24 👁️ 浏览次数: 文章目录一、元素等待二、隐式等待重要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、获取浏览器驱动对象driverwebdriver.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_frequency0.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._driveruntil方法调用了self._driver;# 4. 整体实现,返回的一个元素。elementWebDriverWait(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、获取浏览器驱动对象driverwebdriver.Chrome()# 2、将浏览器 最大化driver.maximize_window()# 打开一个网页driver.get(http://www.baidu.com) # 定位输入框--给一个错误的id不能找到如果直接抛出异常说明等待失效。如果在设置指定时长以外抛出说明等待生效。 # 实例化WebDriverWait()并调用until方法 # 注意调用until方法返回的一定是一个元素 # 显示等待 - 返回查找到的元素# 定位延时加载输入框当找不到时抛出异常并捕获异常找到元素则直接输入try:elWebDriverWait(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,timeout10, poll_frequency0.5) # 获取元素 el wait.until(lambda x:x.find_element_by_id(#chat-textarea)) # 发送内容 el.send_keys(你爱我) 四、强制等待语法sleep(10)提示执行到这句必须等待10秒不灵活。fromtimeimportsleep sleep(10)五、等待对比隐式等待依赖于界面元素的加载影响。比如第一次打开页面有时受网络影响页面始终处于转圈加载的状态加载界面所有的信息有可能定位登录按钮已经早都加载显示出来但是其他元素还没有加载完毕其它元素没有出来和登录按钮没有关系登录按钮出来就想做点击然后跳转到登录页面。原有的隐式等待受整个页面加载的影响即使出现想要的元素也不点击要等待所有的元素加载完毕这影响了测试用例运行的效率。因此要加上显示等待。
AI原生应用中微服务集成的日志管理与分析方法 AI原生应用中微服务集成的日志管理与分析方法关键词:AI原生应用、微服务集成、日志管理、日志分析、数据洞察摘要:本文聚焦于AI原生应用中微服务集成的日志管理与分析方法。首先介绍了相关背景,包括目的、预期读者和文档结构。接着详细解释了… 2026/7/10 9:56:26
AI原生应用架构设计:如何选择最适合的API编排方案 AI原生应用架构设计:如何选择最适合的API编排方案 关键词:AI原生应用、API编排、架构设计、工作流引擎、大模型调用 摘要:AI原生应用的核心是"以AI为中心"构建系统能力,而API编排作为连接不同AI服务的"神经中枢",直接决定了应用的响应速度、成本效率和… 2026/7/11 19:14:55
毕业论文AI辅助写作选哪个?盘点用户推荐的5个实用平台 随着人工智能技术的快速发展,学生和研究人员在学术写作过程中面临如何挑选高效AI辅助工具的挑战。当前市场上有多种AI论文写作平台,功能各异且质量参差不齐,如何根据个人需求选择最合适的工具成为关键问题。针对这一需求,结合功能… 2026/7/12 5:11:27
邮件分类准确率98.7%的AI Agent设计逻辑,为何90%团队在Prompt工程上就失败了? 更多请点击: https://intelliparadigm.com 第一章:邮件分类准确率98.7%的AI Agent设计逻辑,为何90%团队在Prompt工程上就失败了? 高准确率邮件分类并非源于更大模型或更多数据,而取决于AI Agent的分层决策架构与Promp… 2026/7/12 15:02:29
Creative View Pager最佳实践:10个提升用户体验的设计模式 Creative View Pager最佳实践:10个提升用户体验的设计模式 【免费下载链接】creative-viewpager Creative View Pager easy to use in Android 项目地址: https://gitcode.com/gh_mirrors/cr/creative-viewpager Creative View Pager是一款创新的Android视图… 2026/7/12 14:58:29
景深失控?构图失焦?Midjourney景深效果完全掌控,8类典型场景适配方案,含--sref与--style raw协同调优秘技 更多请点击: https://kaifayun.com 第一章:景深失控的本质:Midjourney视觉焦点机制深度解构 Midjourney 的图像生成并非基于传统摄影的光学景深模型,而是通过文本提示(prompt)中语义权重与扩散过程中的注意… 2026/7/12 14:56:28
我谈区域偏心率——Gonzalez错了 偏心率的数学定义 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P312 区域的拟合椭圆看这里。 Rafael Gonzalez的二阶中心矩的表达不说人话。 半长轴和半短轴正比于特征值的根号。Rafael Gonzalez的图11.21和式(… 2026/7/12 14:54:28
AI技术正在改变 人工智能正在改变世界:AI技术的实际应用场景与未来趋势 近年来,人工智能(Artificial Intelligence,简称AI)从一个看似遥远的科技概念,逐渐走进了我们的日常生活和各行各业。从智能手机里的语音助手&#x… 2026/7/12 14:48:26
AutoDock Vina分子对接:新手快速上手的10个实用技巧 AutoDock Vina分子对接:新手快速上手的10个实用技巧 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina AutoDock Vina是一款功能强大且广泛使用的开源分子对接软件,专门用于蛋白质-配体相… 2026/7/12 14:48:26
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/12 0:01:13
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/12 0:03:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/12 0:01:13
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/12 0:03:14