You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮后无法获取更新HTML/WebDriverWait条件满足仍超时

问题解决:点击"Show All"后无法获取完整表格数据

爬取页面https://www.broadwayworld.com/grosses/A-BEAUTIFUL-NOISETHE-NEIL-DIAMOND-MUSICAL时,点击"Show All"按钮后视觉上表格展开,但获取的仍是点击前的旧数据,添加显式等待后还出现超时问题。

关键问题分析

  1. Chrome驱动初始化错误:带等待的代码中webdriver.Chrome(url)是错误用法,驱动初始化不需要传入目标URL,URL应通过driver.get()加载。
  2. 等待条件写法错误:By.CLASS_NAME不支持传入多个类名(如btn btn-red show-all-grosses active),无法正确定位到带active类的按钮。
  3. 缺少表格数据加载等待:按钮添加active类仅代表状态变化,不代表表格数据已完全加载,需要额外等待表格内容更新。

修正后的完整代码

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
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

url = 'https://www.broadwayworld.com/grosses/A-BEAUTIFUL-NOISETHE-NEIL-DIAMOND-MUSICAL'
# 自动管理Chrome驱动,避免手动配置路径
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)

# 定位"Show All"按钮
gross_data_container = driver.find_element(By.CLASS_NAME, 'all-gross-data')
show_all_btn = gross_data_container.find_element(By.TAG_NAME, 'button')

# 执行点击操作(优先用原生click,遇到拦截再改用execute_script)
show_all_btn.click()

# 等待按钮激活(用CSS选择器定位多类名元素)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, 'button.btn.btn-red.show-all-grosses.active'))
)

# 等待表格数据加载完成:通过判断表格行数变化确认(可根据实际情况调整阈值)
WebDriverWait(driver, 10).until(
    lambda d: len(d.find_elements(By.CSS_SELECTOR, '.table-body tr')) > 15
)

# 获取更新后的表格HTML
updated_table = driver.find_element(By.CLASS_NAME, 'table-body')
table_html = updated_table.get_attribute('outerHTML')
print(table_html)

driver.quit()

核心修正说明

  • 驱动初始化:使用WebDriverManager自动安装并管理Chrome驱动,无需手动指定驱动路径,避免路径错误。
  • 等待条件优化:改用CSS_SELECTOR定位带active类的按钮,正确识别按钮激活状态。
  • 数据加载等待:增加表格行数判断的等待逻辑,确保表格数据完全加载后再获取HTML,避免拿到旧数据。
  • 点击方式:优先使用原生click()方法模拟用户点击,更符合页面交互逻辑,减少异常情况。

内容的提问来源于stack exchange,提问作者Jordan Lingao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:43:31