博客
关于我
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 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>
    MySQL 的 varchar 水真的太深了!
    查看>>
    mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
    查看>>
    MySQL 的instr函数
    查看>>
    MySQL 的mysql_secure_installation安全脚本执行过程介绍
    查看>>
    MySQL 的Rename Table语句
    查看>>
    MySQL 的全局锁、表锁和行锁
    查看>>
    mysql 的存储引擎介绍
    查看>>
    MySQL 的存储引擎有哪些?为什么常用InnoDB?
    查看>>
    Mysql 知识回顾总结-索引
    查看>>
    Mysql 笔记
    查看>>
    MySQL 精选 60 道面试题(含答案)
    查看>>
    mysql 索引
    查看>>