webdriver显式和隐式等待、强制等待
UI自动化各种等待:
强制等待:强制性让代码等待XX时间,等待后继续执行下一步操作。
隐式等待:这种方法是设置一个最长的等待时间,如果在规定时间内网页全部元素加载完成,则执行下一步,否则一直等待时间截止才抛出异常。
显式等待:根据条件灵活的等待,程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。
区别:显示等待比隐式等待更加灵活,可以设置不同的等待时间和条件来等待元素的出现、可点击、可见等状态。在需要等待特定条件的情况下,使用显示等待可以更精确地控制等待时间。
强制等待(固定时间)
隐式等待(全局通用,只需设置一次)
显式等待(针对单个元素,灵活、自定义)
implicitly_wait() 方法隐式等待,用来设置超时,一般把implicitly_wait()方法调用在加载测试地址后,等待所测试的应用程序加载
WebDriverWait() 显式等待
time.sleep() 强制等待
from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium import webdriver
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://baidu.com') driver.implicitly_wait(30) #元素是否出现可点 ,参数是locator xinwei=WebDriverWait(driver,5).until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'.mnav'))) xinwei.click() #验证相应位置元素的文本信息,返回值是布尔 俩参数locator text driver.find_element_by_xpath(".//*[@id='u1']/a[7]").click() driver.find_element_by_id('TANGRAM__PSP_10__userName').send_keys('123') driver.find_element_by_id('TANGRAM__PSP_10__submit').click() bo=WebDriverWait(driver,5).until(expected_conditions.text_to_be_present_in_element((By.CSS_SELECTOR,'#TANGRAM__PSP_10__error'),'请您输入密码')) print(bo)#打印结果:True #元素是否可见,可见后操作 参数是locator sou=WebDriverWait(driver,5).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR,'#kw'))) sou.send_keys('java') driver.quit()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人