selenium之WebDriverWait
启动浏览器并导航到登录页面
发布日期:2025-06-18 17:23:36
浏览次数:3
分类:精选文章
本文共 2277 字,大约阅读时间需要 7 分钟。
WebDriverWait简介与应用实例
在Selenium自动化测试中,等待机制至关重要。 WebDriverWait 是一个强大的工具,帮助开发者在特定条件满足之前等待指定的时间。这对于确保页面完全加载,避免因页面未完成而导致测试失败至关重要。
WebDriverWait的基本用法
WebDriverWait 的基本使用方法是实例化时指定一个WebDriver 实例和等待时间(以秒为单位)。然后调用 until() 方法,并提供一个期望条件。如果在等待时间内条件满足,until() 方法会立即返回相应元素;否则,会抛出超时异常。
期望条件的类型多样,常见的有:
- presence_of_element_located(locator):等待元素在DOM中出现,如By.ID、By.NAME 等。
- visibility_of_element_located(locator):等待元素在页面中可见(既存在于DOM中,又在视觉上可见)。
- element_to_be_clickable(locator):等待元素可以被点击。
- text_to_be_present_in_element(locator, text):等待元素中包含特定文本。
登录页面验证码测试实例
from selenium import webdriverdriver = webdriver.Chrome()driver.get("https://example.com/login") - 等待验证码输入框和提交按钮
- 发送验证码并执行登录
- 处理验证码错误
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECwait = WebDriverWait(driver, 10)captcha_input = wait.until(EC.presence_of_element_located((By.ID, 'captcha')))submit_button = wait.until(EC.presence_of_element_located((By.ID, 'submit')))
captcha_input.send_keys("1234")username_input = driver.find_element_by_id("username")password_input = driver.find_element_by_id("password")username_input.send_keys("myusername")password_input.send_keys("mypassword")submit_button.click() error_message = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'error-message')))assert "验证码错误" in error_message.text
完整代码示例
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()driver.get("https://example.com/login")wait = WebDriverWait(driver, 10)captcha_input = wait.until(EC.presence_of_element_located((By.ID, 'captcha')))submit_button = wait.until(EC.presence_of_element_located((By.ID, 'submit')))captcha_input.send_keys("1234")username_input = driver.find_element_by_id("username")password_input = driver.find_element_by_id("password")username_input.send_keys("myusername")password_input.send_keys("mypassword")submit_button.click()error_message = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'error-message')))assert "验证码错误" in error_message.textdriver.quit() 通过以上方法,你可以在Selenium自动化测试中,有效地处理页面加载状态,并确保验证码测试的准确性。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2026年05月25日 23时07分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!