自动化测试:Selenium中的时间等待

在 Selenium 中,时间等待指在测试用例中等待某个操作完成或某个事件发生的时间。Selenium 中提供了多种方式来进行时间等待,包括使用 ExpectedConditions 中的 presence_of_element_located 和 visibility_of_element_located 方法等待元素可见或不可见,以及使用 until 和 when 等待某个特定操作完成或某个特定事件发生。

下面是一些示例代码: 

1. 使用 presence_of_element_located 方法等待某个元素加载

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待某个元素加载

element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myelement')))

2. 使用 until 等待某个特定操作完成

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待页面中的表单加载完成

element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myform')))

# 查找元素并提交表单

element.find_element_by_id('my-input').send_keys('my-value')

element.find_element_by_id('my-submit').click()

3. 使用 when 等待某个特定事件发生

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待页面中的表单提交完成

element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myform')))

# 等待表单提交完成事件触发

element.find_element_by_id('my-submit').click()

需要注意的是:

时间等待的时间长度应该根据具体的测试用例来确定,并且应该尽可能地模拟真实用 户的行为,以保证测试用例更加准确和可靠。

4. 使用 ExpectedConditions.visibility_of_element_located 方法等待某个元素可见

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待某个元素可见

element = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, 'my-element')))

需要注意的是:

visibility_of_element_located 方法只能用于等待某个元素可见,而不能用于等待某个元素不可见

另外,visibility_of_element_located 方法可能会比其他方法消耗更多的时间,因为它会等待元素变为可见,而不是仅仅判断元素是否可见。因此,在使用该方法时需要根据具体情况进行调整

5. 使用 ExpectedConditions.title_contains 方法等待页面标题包含指定内容

from selenium import ebdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待页面标题包含指定内容

element = WebDriverWait(browser, 10).until(EC.title_contains('My Web Page'))

需要注意的是:

title_contains 方法只能用于等待页面标题包含指定内容,而不能用于等待页面标题不包含指定内容

另外,title_contains 方法可能会比其他方法消耗更多的时间,因为它会等待页面标题完全包含指定内容,而不是仅仅判断页面标题是否包含指定内容。因此在使用该方法时需要根据具体情况进行调整。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关推荐

  1. Selenium自动化测试入门:设置等待时间

    2024-03-26 11:12:09       28 阅读
  2. Web测试自动化工具Selenium使用

    2024-03-26 11:12:09       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 11:12:09       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 11:12:09       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 11:12:09       87 阅读
  4. Python语言-面向对象

    2024-03-26 11:12:09       96 阅读

热门阅读

  1. 讨论物联网如何帮助监测和改善环境质量

    2024-03-26 11:12:09       45 阅读
  2. 【华大 HC32L110】低功耗开发记录

    2024-03-26 11:12:09       43 阅读
  3. Linux C++ 004-流程控制语句

    2024-03-26 11:12:09       32 阅读
  4. C++前端述职报告

    2024-03-26 11:12:09       42 阅读
  5. 算法——矩阵

    2024-03-26 11:12:09       39 阅读
  6. 基于SpringBoot IP黑白名单的实现3

    2024-03-26 11:12:09       33 阅读
  7. 数据分析-Pandas类别数据序列合并

    2024-03-26 11:12:09       41 阅读
  8. uniapp打包小程序,使用$refs报错解决办法

    2024-03-26 11:12:09       38 阅读
  9. FastAPI+React全栈开发03 为什么使用MongoDB

    2024-03-26 11:12:09       36 阅读
  10. 深入理解Flutter中的ValueNotifier

    2024-03-26 11:12:09       44 阅读
  11. JVM加类加载器

    2024-03-26 11:12:09       38 阅读
  12. 【LeetCode-300.最长递增子序列】

    2024-03-26 11:12:09       39 阅读
  13. APIKit探索之旅:bug拦截

    2024-03-26 11:12:09       35 阅读