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

相关推荐
程序员雷子9 小时前
接口自动化测试数据怎么来?涉及资金的接口如何在线上回归?
功能测试·selenium·测试工具·jmeter·单元测试·测试用例·postman
worxfr12 小时前
CentOS7 安装Selenium(使用webdriver_manager自动安装ChromeDriver)
python·selenium·测试工具
测试老哥16 小时前
外包干了2年,技术明显进步...
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
啧不应该啊2 天前
Python爬虫bs4基本使用
爬虫·python·selenium
qq_433716952 天前
使用Postman搞定各种接口token实战
自动化测试·软件测试·测试工具·jmeter·web安全·压力测试·postman
媛媛要加油呀2 天前
Selenium(1)-webUI自动化环境部署,基本元素定位
selenium·测试工具·自动化
DngYT2 天前
selenium模块入门
selenium·测试工具
卡布达ovo2 天前
Selenium入门
selenium·测试工具
我是大头鸟2 天前
Python 使用selenium 4.25 进行爬虫(1)
爬虫·python·selenium
HinsCoder2 天前
【测试】——Selenium API (万字详解)
自动化测试·笔记·学习·selenium·测试工具·web·测试