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")
    1. 等待验证码输入框和提交按钮
    2. 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')))
      1. 发送验证码并执行登录
      2. 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()
        1. 处理验证码错误
        2. 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秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章