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

网站标签变更导致Selenium触发TimeoutException异常该如何解决?

解决方案
  • 先移除失效定位代码:当前触发报错的section.section div.container h2定位规则已随网站前端结构更新失效,延长等待时间无法解决该类问题——因为目标元素已不存在于指定的DOM路径中。若你实际需求仅为获取Trustscore相关数据,可直接删除该行无效代码,无需等待不存在的元素加载。
  • 替换更稳定的Trustscore元素定位规则:原XPATH依赖页面固定文本结构,容错率低,可替换为不依赖文本、关联元素属性的定位规则,示例如下:
    替换前://div[text()='Trustscore']/../following-sibling::div/descendant::div[@class='icon']
    替换后://div[contains(@class, 'trustscore')]//div[@class='icon']
  • 优化滚动逻辑:原固定滚动1000px的逻辑可能因页面结构更新无法滚动到目标元素区域,可修改为自动滚动到目标元素位置,避免因元素不在可视区导致的可见性判断失败。
  • 可选优化:增加异常捕获与重试机制,针对页面加载波动的场景可加最多3次重试逻辑,避免单次超时直接报错。

修正后完整代码示例

from selenium.common.exceptions import TimeoutException
import time
from random import randrange

# Initialise Chrome parameters
chrome_options = webdriver.ChromeOptions()

# Open Chrome
driver=webdriver.Chrome(path,chrome_options=chrome_options)
driver.maximize_window()
    
driver.get(my_web)

wait = WebDriverWait(driver, 30)
time.sleep(randrange(5))

t_score = None
try:
    # 先定位Trustscore模块,滚动到对应区域
    trust_block = wait.until(EC.presence_of_element_located((By.XPATH, "//div[contains(@class, 'trustscore')]")))
    driver.execute_script("arguments[0].scrollIntoView();", trust_block)
    # 等待分数元素可见后获取文本
    t_score = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class, 'trustscore')]//div[@class='icon']"))).text
except TimeoutException:
    # 可自定义超时后的处理逻辑
    print("获取Trustscore数据超时")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:45:02