Selenium WebDriverWait和expected_conditions来定位实时更新的元素

WebDriverWait 是 Selenium WebDriver 的一个等待机制,用于等待一个特定条件成立直到一个最大的时间阈值。这种等待方式是显式等待,与隐式等待相对。显式等待提供了一种更灵活的方式来等待页面上的元素或条件,因为它允许你指定等待条件和时间。

WebDriverWait 通常与 expected_conditions 一起使用,来指定等待的条件。当条件满足时,等待操作会立即结束,脚本继续执行。如果达到最大等待时间,而条件仍然不满足,则会抛出一个 TimeoutException

expected_conditions 是 Selenium WebDriver 中用于等待某些条件出现或消失的一组预定义的条件。这些条件提供了一种有效的方式来等待页面上的元素变得可见、可点击或满足其他条件,这对于处理动态内容的网页特别有用。

使用 expected_conditions 时,通常会与 WebDriverWait 类一起使用,以提供一个时间上的限制,确保脚本在继续执行前等待特定的条件满足。这样可以避免脚本因为页面元素还没加载完成而尝试进行操作导致的错误。

下面是一些常用的 expected_conditions

  • presence_of_element_located:等待直到元素出现在DOM中,但不一定可见。

  • visibility_of_element_located:等待直到元素出现在DOM中且可见(宽和高都大于0)。

  • element_to_be_clickable:等待直到元素可见且可点击。

  • title_contains:等待直到页面标题包含给定的文本。

  • alert_is_present:等待直到弹窗出现。

    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

    driver = webdriver.Firefox()
    driver.get("http://example.com")

    try:
    # 等待直到元素可见且可点击
    clickableElement = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "myElementId"))
    )
    clickableElement.click()
    finally:
    driver.quit()

WebDriverWait 等待最多10秒钟,直到ID为"你的元素ID"的元素变得可见。如果在10秒内元素变可见,则继续执行后面的代码;如果10秒后元素仍然不可见,则会抛出 TimeoutException

相关推荐
老神在在0013 小时前
【Selenium 自动化精讲】浏览器弹窗与登录界面的本质区别 & 实操指南
javascript·学习·selenium·测试工具·自动化
123过去5 小时前
mfcuk使用教程
linux·测试工具·安全
123过去7 小时前
trufflehog使用教程
linux·测试工具·安全
禾小西7 小时前
性能测试后的瓶颈定位与调优:自下而上找问题,自上而下解难题
java·测试工具
测试199810 小时前
python+selenium 定位到元素,无法点击的解决方法
自动化测试·软件测试·python·selenium·测试工具·测试用例·压力测试
shughui11 小时前
Fiddler(二):自动转发(AutoResponder)功能详解
前端·测试工具·fiddler
程序员三藏11 小时前
接口自动化测试思路和实战:编写线性测试脚本实战
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
程序员杰哥12 小时前
软件测试之黑盒测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
程序员杰哥13 小时前
Web UI自动化测试之PO篇
自动化测试·软件测试·python·selenium·测试工具·ui·测试用例