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

Python Selenium项目遇TimeoutException报错求助

排查Selenium无头模式下TimeoutException的常见原因及修复方案

先看你代码里的明显问题

你先调用了driver.find_elements(By.XPATH, "//div[@class = 'item-summary']"),紧接着又用WebDriverWait等待单个元素,这两步完全重复——find_elements会立即执行,若元素未加载完成只会返回空列表,完全没必要提前执行,直接用等待逻辑即可。

无头模式的坑(最可能触发超时的原因)

无头Chrome默认窗口尺寸极小,很多页面会因窗口过小切换到移动端布局,导致你用的XPATH定位不到目标元素;另外无头模式容易被网站识别为爬虫,限制资源加载。解决办法:

  • 强制设置正常窗口大小
  • 添加模拟普通浏览器的参数

等待条件的优化选择

你用的EC.presence_of_element_located仅判断元素在DOM中存在,但元素可能还处于隐藏、未渲染完成状态,这种情况换成EC.visibility_of_element_located更靠谱,它会等元素可见后再返回结果。

其他排查方向

  • ChromeDriver版本不匹配:确保ChromeDriver版本和本地安装的Chrome浏览器版本完全一致,版本不兼容会引发各种奇怪的超时问题。
  • XPATH准确性:关闭无头模式,手动打开页面,用浏览器开发者工具检查目标元素的XPATH是否准确,有没有class拼写错误、页面结构变化的情况。
  • 页面动态加载:如果目标元素是AJAX异步加载的,可能需要延长等待时间,或者先等待页面加载完成的标志(比如加载动画消失)。

修改后的代码示例

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = Options()
options.headless = True
# 添加无头模式必要参数
options.add_argument("--window-size=1920,1080")  # 设置正常窗口大小
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

service_ = Service(executable_path='C:/Users/Downloads/chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service_, options=options)
wait = WebDriverWait(driver, 30)

driver.get(url_2)
# 等待元素可见,而非仅存在于DOM
manga_1 = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@class='item-summary']")))

快速排查步骤

  1. 临时注释掉options.headless = True,手动运行代码,确认页面是否能正常加载、目标元素是否存在。
  2. 在driver.get(url_2)后添加print(driver.page_source),打印页面源码,搜索item-summary是否存在,验证页面是否真的加载了目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:55:26