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


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

    下面是一些示例代码: 

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

    1. from selenium import webdriver
    2. from selenium.webdriver.common.by import By
    3. from selenium.webdriver.support.ui import WebDriverWait
    4. from selenium.webdriver.support import expected_conditions as EC
    5. # 设置浏览器驱动
    6. browser = webdriver.Chrome()
    7. # 打开网站
    8. browser.get('
    9. https://example.com
    10. browser.get('
    11. # 等待某个元素加载
    12. element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myelement')))

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

    1. from selenium import webdriver
    2. from selenium.webdriver.common.by import By
    3. from selenium.webdriver.support.ui import WebDriverWait
    4. from selenium.webdriver.support import expected_conditions as EC
    5. # 设置浏览器驱动
    6. browser = webdriver.Chrome()
    7. # 打开网站
    8. browser.get('
    9. https://example.com
    10. browser.get('
    11. # 等待页面中的表单加载完成
    12. element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myform')))
    13. # 查找元素并提交表单
    14. element.find_element_by_id('my-input').send_keys('my-value')
    15. element.find_element_by_id('my-submit').click()

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

    1. from selenium import webdriver
    2. from selenium.webdriver.common.by import By
    3. from selenium.webdriver.support.ui import WebDriverWait
    4. from selenium.webdriver.support import expected_conditions as EC
    5. # 设置浏览器驱动
    6. browser = webdriver.Chrome()
    7. # 打开网站
    8. browser.get('
    9. https://example.com
    10. browser.get('
    11. # 等待页面中的表单提交完成
    12. element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myform')))
    13. # 等待表单提交完成事件触发
    14. element.find_element_by_id('my-submit').click()

    需要注意的是:

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

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

    1. from selenium import webdriver
    2. from selenium.webdriver.common.by import By
    3. from selenium.webdriver.support.ui import WebDriverWait
    4. from selenium.webdriver.support import expected_conditions as EC
    5. # 设置浏览器驱动
    6. browser = webdriver.Chrome()
    7. # 打开网站
    8. browser.get('
    9. https://example.com
    10. browser.get('
    11. # 等待某个元素可见
    12. 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 方法等待页面标题包含指定内容

    1. from selenium import ebdriver
    2. from selenium.webdriver.common.by import By
    3. from selenium.webdriver.support.ui import WebDriverWait
    4. from selenium.webdriver.support import expected_conditions as EC
    5. # 设置浏览器驱动
    6. browser = webdriver.Chrome()
    7. # 打开网站
    8. browser.get('
    9. https://example.com
    10. browser.get('
    11. # 等待页面标题包含指定内容
    12. element = WebDriverWait(browser, 10).until(EC.title_contains('My Web Page'))

     

    需要注意的是:

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

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

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    文档获取方式:

    这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

    以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

  • 相关阅读:
    java反序列化漏洞详解
    基于Vue+SpringBoot的医院门诊预约挂号系统 开源项目
    Elasticsearch部署中的两大常见问题及其解决方案
    视听杂志视听杂志社视听编辑部2022年第11期目录
    centos7容器安装宝塔
    Vue的生命周期快速入门
    LeetCode 441. 排列硬币
    uniapp和小程序设置tabBar和显示与隐藏tabBar
    java字符
    设计模式之观察者模式(优先使用对象组合的原则)的C++实现
  • 原文地址:https://blog.csdn.net/2301_79535544/article/details/133563322