您现在的位置是:网站首页 > 博客日记 >

Selenium等待动态渲染数据多种情况

作者:YXN-python 阅读量:66 发布日期:2023-11-22

1、使用 WebDriverWait 等待特定元素出现

WebDriverWait 是 Selenium 提供的一种显式等待机制,可以等待某个条件满足后再继续执行。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待某个元素出现
wait = WebDriverWait(driver, 60)
element = wait.until(
    EC.presence_of_element_located((By.ID, "element_id"))
)
  • presence_of_element_located: 等待元素出现在 DOM 中。
  • visibility_of_element_located: 等待元素出现在 DOM 中并且可见。
  • text_to_be_present_in_element: 等待元素的文本中包含特定内容。

2、等待 JavaScript 执行完成

如果数据渲染依赖于某个 JavaScript 变量或函数,可以通过执行 JavaScript 来检查。

# 等待某个 JavaScript 变量或函数返回期望值
wait.until(
    lambda driver: driver.execute_script("return window.someVariable === 'expectedValue';")
)

3、等待 AJAX 请求完成

如果数据是通过 AJAX 请求加载的,可以通过检查 jQuery 的 AJAX 请求状态来判断是否完成。

wait.until(
    lambda driver: driver.execute_script("return jQuery.active === 0;")
)

4、等待页面加载完成

如果数据渲染是在页面加载完成后进行的,可以等待页面完全加载。

driver.implicitly_wait(10)  # 隐式等待,最多等待10秒

5、自定义条件等待

你可以自定义等待条件,比如检查某个元素的属性或内容是否发生变化。

wait.until(
    lambda driver: driver.find_element(By.ID, "element_id").text != "Loading..."
)

 

 

YXN-python

2023-11-22