Selenium调用Chromedriver打开空白页后自动关闭报错如何排查
Selenium Chromedriver启动空白页闪退问题排查
- 系统Chrome安全策略变更:如果近期Win10系统推送过组策略更新,或是企业域环境新增了Chrome浏览器管控规则,会阻止chromedriver对Chrome进程的操控,即使驱动和浏览器版本完全匹配也会出现启动后立即终止的情况。可在Chrome地址栏输入
chrome://policy/查看是否有新增的异常策略项。 - 本地缓存的驱动文件损坏:webdrivermanager拉取的chromedriver文件如果被杀毒软件误删、篡改,或者缓存目录存在权限问题,即使版本号匹配也无法正常和浏览器交互。可手动清空webdrivermanager默认缓存目录(通常为用户目录下的
.m2/repository/webdriver或.cache/selenium路径),重新运行测试触发驱动重新拉取。 - 项目依赖版本冲突:如果近一周内项目新增/更新过其他依赖,可能和当前使用的Selenium 3.14.0版本产生隐式冲突,尤其是okhttp、guava这类Selenium依赖的基础组件版本被覆盖时,会直接触发
ExceptionInInitializerError初始化错误。如果是Maven项目可执行mvn dependency:tree命令排查依赖树,确认是否存在版本被强制覆盖的情况。 - Chrome用户配置异常:如果启动Chrome时复用了本地默认的用户配置文件,近期配置文件损坏、或是新增了会拦截自动化操控的扩展程序,也会导致启动后闪退。可在初始化驱动时添加以下启动参数规避该问题:
ChromeOptions options = new ChromeOptions(); // 禁用沙箱模式 options.addArguments("--no-sandbox"); // 禁用所有扩展 options.addArguments("--disable-extensions"); // 启用无痕模式 options.addArguments("--incognito"); // 禁用共享内存限制 options.addArguments("--disable-dev-shm-usage"); WebDriver driver = new ChromeDriver(options);
- 安全工具拦截:如果近期杀毒软件、Windows Defender更新了防护规则,会将chromedriver对浏览器的操控判定为风险行为,直接终止Chrome进程。可临时关闭实时防护后重新运行测试,验证是否为拦截导致的问题。
内容的提问来源于stack exchange,提问作者Sayed
相关产品推荐
相关产品推荐

