博客
关于我
selenium之WebDriverWait
阅读量:798 次
发布时间:2023-04-15

本文共 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自动化测试中,有效地处理页面加载状态,并确保验证码测试的准确性。

    转载地址:http://zzgfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL为Null会导致5个问题,个个致命!
    查看>>
    MySQL为什么不建议使用delete删除数据?
    查看>>
    MySQL主从、环境搭建、主从配制
    查看>>
    Mysql主从不同步
    查看>>
    mysql主从同步及清除信息
    查看>>
    MySQL主从同步相关-主从多久的延迟?
    查看>>
    mysql主从同步配置方法和原理
    查看>>
    mysql主从复制 master和slave配置的参数大全
    查看>>
    MySQL主从复制几个重要的启动选项
    查看>>
    MySQL主从复制及排错
    查看>>
    mysql主从复制及故障修复
    查看>>
    MySQL主从复制的原理和实践操作
    查看>>
    webpack loader配置全流程详解
    查看>>
    mysql主从复制,读写分离,半同步复制实现
    查看>>
    MySQL主从失败 错误Got fatal error 1236解决方法
    查看>>
    MySQL主从架构与读写分离实战
    查看>>
    MySQL主从篇:死磕主从复制中数据同步原理与优化
    查看>>
    mysql主从配置
    查看>>
    MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
    查看>>
    MySQL之CRUD
    查看>>