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

相关推荐
进击的雷神10 小时前
SpiderFlow平台v0.5.0之引入selenium插件
selenium·测试工具·spiderflow
天堂的恶魔94610 小时前
软件测试 —— 自动化测试(Selenium)
selenium·测试工具
Feng.Lee12 小时前
性能测试工具Jmeter分布式运行
分布式·测试工具·jmeter
码道功成13 小时前
selenium在Linux环境下截屏(save_screenshot)中文乱码的问题
selenium·测试工具
不是二师兄的八戒14 小时前
Python Selenium 库学习指南
python·selenium
大霸王龙16 小时前
使用Selenium进行网页自动化测试
python·selenium·测试工具
一只搬砖的猹18 小时前
软件项目开发关键节点——开源合规扫描
测试工具·开源·github·apache·license·软件项目·开源合规
z千鑫1 天前
【Python】Python之Selenium基础教程+实战demo:提升你的测试+测试数据构造的效率!
开发语言·python·selenium
Parrot 安全小子1 天前
Wireshark 使用教程:网络分析从入门到精通
网络·测试工具·wireshark
郁大锤1 天前
Playwright vs Selenium:全面对比分析
selenium·测试工具·playwright