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

Python Selenium打印find_elements结果返回WebElement对象问题排查

问题原因

你看到的输出不是程序异常,是Selenium WebElement对象的默认打印内容,出现该问题的原因主要有三个:

  1. find_elements是复数定位方法,返回的是匹配到的所有WebElement对象组成的列表,直接打印列表只会输出对象的序列化标识,不会自动提取元素内的文本。你之前能正常拿到文本大概率是之前代码中额外调用了.text属性提取内容,或是早期Selenium版本的打印逻辑不同。
  2. CoinMarketCap近期更新了页面反爬策略,无头模式下页面没有正常渲染目标数据,导致定位到的元素无有效文本。
  3. 网站更新了页面结构,你原来的XPath路径定位到的不是承载时间文本的目标节点。
修复步骤
  • 优先修改元素取值逻辑,单个元素用单数定位方法,主动提取文本内容,同时增加等待逻辑避免元素未加载完成就定位:
# 替换原有added_ago相关代码
driver.implicitly_wait(10) # 最多等待10秒待元素加载完成
try:
    # 单数定位取第一个匹配元素
    added_ago_ele = driver.find_element(By.XPATH, '//tbody[1]/tr[1]/td[10]')
    added_ago = added_ago_ele.text
    print(added_ago)
except Exception as e:
    print(f"定位失败:{e}")
  • 如果仍无法拿到有效内容,优化无头模式配置绕过反爬检测:
chrome_options = Options()
# 改用新版无头模式,自动化特征更少
chrome_options.add_argument("--headless=new")
# 伪造正常浏览器UA
chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
# 移除Selenium自动化标识
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("useAutomationExtension", False)

driver = webdriver.Chrome(executable_path=binary_path, options=chrome_options)
# 启动后修改webdriver检测属性
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
  • 如果出现定位报错,打开浏览器开发者工具重新校验XPath路径,确认页面表格列的索引是否发生了变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:57:03