Win10下Python Selenium ChromeDriver 非headless模式打开空白data:,页问题
有头模式下打开data:,空白页的排查方向
首先说明:headless模式已经能正常加载目标站点的政策提示页,说明网络通路、站点访问逻辑、ChromeDriver和Selenium的基础兼容都是正常的,问题完全出在有头模式的WebDriver启动流程上,和目标站点的政策跳转规则无关,可以按以下方向逐点排查:
- 检查启动参数的模式适配
有头和无头模式的Chrome启动逻辑存在差异,部分仅适配无头环境的参数(比如--no-sandbox、--disable-dev-shm-usage)在无头模式下不会触发异常,但在有头模式下会直接阻断WebDriver和Chrome的协议交互,导致WebDriver启动后直接停在初始的data:,空白页,不会发起任何页面访问请求。这类参数如果之前为了适配无头模式加过,在有头模式测试时需要临时移除。 - 排查本地Chrome进程的占用冲突
如果本地有常驻后台的Chrome进程正在运行,有头模式下WebDriver启动的新Chrome实例会优先复用已存在进程的上下文,不会执行传入的URL加载逻辑,也会卡在初始化阶段停在data:,页面。可以给自动化实例配置独立的用户数据目录,和本地日常使用的Chrome配置完全隔离,示例配置:chrome_options.add_argument("--user-data-dir=C:\\temp\\selenium_auto_chrome") - 规避已知的版本兼容问题
Selenium 3.141.0搭配ChromeDriver 87.0.4280的版本组合,在有头模式下存在自动化提示拦截触发的协议交互超时问题,表现为初始化阶段直接卡住,窗口停在data:,空白页。可以通过关闭自动化提示的实验参数规避这个问题:chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option("useAutomationExtension", False) - 排查环境变量的路径检索冲突
虽然你已经把ChromeDriver目录加入了系统PATH,但Windows环境下的PATH检索优先级可能存在偏差,导致headless模式调用到了正确的驱动和Chrome版本,有头模式下却匹配到了其他位置的不匹配版本Chrome/ChromeDriver。可以在代码中显式指定Chrome可执行文件的绝对路径,避免Selenium自动检索出现偏差:chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
内容的提问来源于stack exchange,提问作者Mason
相关产品推荐
相关产品推荐

