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

Python Selenium无法读取JS渲染页面内容问题排查

问题根因
  • 核心问题是你当前使用的旧版Chrome无头模式被惠普打印机内置Web系统的环境检测逻辑拦截了。旧版--headless模式的浏览器User-Agent会携带HeadlessChrome专属标识,且存在多处和正常有界面Chrome不一致的特征,设备端的JS脚本检测到非合规浏览器环境后,会直接终止后续页面渲染逻辑,只返回“请启用JavaScript”的兜底提示页。
  • 这种场景下页面本身的业务渲染JS根本没有执行,所以不管是调用driver.page_source还是通过execute_script读取DOM节点内容,拿到的都只会是初始的兜底提示内容,和你写的取内容逻辑没有关系。
  • 你当前配置里的禁用图片加载、忽略证书错误、窗口大小、页面加载策略这些参数都不会导致这个问题,可以保留。
验证方式

去掉--headless启动参数,用有界面模式运行相同代码,如果能正常加载出打印机页面内容,即可确认是无头模式被检测拦截导致的问题。

修复方案

调整Chrome启动参数即可,其余代码逻辑无需大改:

  1. 替换旧无头模式参数为新版Chrome无头模式,新版无头模式完全对齐正常Chrome的运行特征,不会携带无头标识,不会被常规环境检测识别:
    # 注释掉旧的参数
    # chrome_options.add_argument("--headless")
    # 替换为新版无头参数
    chrome_options.add_argument("--headless=new")
    
  2. 若替换参数后仍存在拦截,可手动覆盖浏览器UA,彻底移除无头相关标识,示例UA可根据你本地Chrome的实际版本调整:
    chrome_options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36")
    
  3. 修复后直接使用driver.page_source即可获取完整渲染后的页面源码,无需额外通过execute_script读取innerHTML。如果你的wait_for_page是固定时长等待,建议替换为Selenium显式等待,待页面上的打印机专属元素(比如设备名称、状态标识节点)加载完成后再读取源码,避免页面未加载完成就取内容的时序问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 01:36:32