- Selenium Webdriver 教程
- 家
- 介绍
- 安装
- 浏览器导航
- 识别单个元素
- 识别多个元素
- 显式等待和隐式等待
- 弹出窗口
- 向后和向前导航
- cookie
- 例外情况
- 动作类
- 创建基本测试
- 形式
- 拖放
- 视窗
- 警报
- 处理链接
- 处理编辑框
- 颜色支持
- 在 Python 中生成 HTML 测试报告
- 从 Excel 读取/写入数据
- 处理复选框
- 在多个浏览器中执行测试
- 无头执行
- 等待支持
- 选择支持
- JavaScript 执行器
- Chrome WebDriver 选项
- 滚动操作
- 捕获屏幕截图
- 右键点击
- 双击
- Selenium Webdriver 有用资源
- Selenium WebDriver - 快速指南
- Selenium WebDriver - 有用的资源
- Selenium WebDriver - 讨论
Selenium Webdriver - 显式和隐式等待
让我们了解 Selenium Webdriver 中的显式等待是什么。
显式等待
应用显式等待来指示网络驱动程序等待特定条件,然后再转到自动化脚本中的其他步骤。
显式等待是使用 WebDriverWait 类和预期条件来实现的。Expected_conditions 类有一组预构建的条件,可与 WebDriverWait 类一起使用。
预建条件
下面给出了与 WebDriverWait 类一起使用的预构建条件 -
警报存在
元素选择状态待定状态
所有元素的存在位置
要选择的元素
元素中出现的文本
元素值中出现的文本
frame_to_be_available_and_switch_to_it
要选择的元素
元素位置的可见性
元素存在位置
标题是
标题包含
可见性_of
陈旧性
元素可点击
元素位于的不可见性
要选择的元素
让我们等待文本 - Team @ Tutorials Point,单击页面上的链接 - Team 即可获得该文本。
单击“团队”链接后,会出现“团队@教程点”文本。
代码实现
显式等待的代码实现如下 -
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait driver = webdriver.Chrome(executable_path='../drivers/chromedriver') #url launch driver.get("https://www.tutorialspoint.com/about/about_careers.htm") #identify element l = driver.find_element_by_link_text('Team') l.click() #expected condition for explicit wait w = WebDriverWait(driver, 5) w.until(EC.presence_of_element_located((By.TAG_NAME, 'h1'))) s = driver.find_element_by_tag_name('h1') #obtain text t = s.text print('Text is: ' + t) #driver quit driver.quit()
输出
输出如下 -
输出显示消息 - Process with exit code 0 表示上述 Python 代码执行成功。此外,文本(从文本方法获得)-Team @TutorialsPoint 也会打印在控制台中。
隐式等待
应用隐式等待来指示 Webdriver 在特定时间内轮询 DOM(文档对象模型),同时尝试识别当前不可用的元素。
隐式等待时间的默认值为 0。设置等待时间后,它在 Webdriver 对象的整个生命周期中保持适用。如果未设置隐式等待并且 DOM 中仍不存在元素,则会引发异常。
隐式等待的语法如下-
driver.implicitly_wait(5)
此处,对 webdriver 对象应用五秒的等待时间。
代码实现
隐式等待的代码实现如下 -
from selenium import webdriver #set path of chromedriver.exe driver = webdriver.Chrome(executable_path='../drivers/chromedriver') #implicit wait of 0.5s driver.implicitly_wait(0.5) #url launch driver.get("https://www.tutorialspoint.com/about/about_careers.htm") #identify link with link text l = driver.find_element_by_link_text('FAQ') #perform click l.click() print('Page navigated after click: ' + driver.title) #driver quit driver.quit()
输出
输出如下 -
输出显示消息 - Process with exit code 0 表示上述 Python 代码执行成功。单击常见问题解答链接后,网络驱动程序会等待 0.5 秒,然后进入下一步。此外,下一页的标题(从 driver.title 方法获得) - 常见问题 - Tutorialspoint 也会打印在控制台中。