使用Java 16.0.1搭配Selenium 4.0.0及ChromeDriver无法启动Chrome问题
Selenium 4.0.0 浏览器启动失败解决方案
- 解决Mac系统对ChromeDriver的权限拦截问题
Mac OS X 10.15及以上版本会默认拦截未经过公证的第三方二进制文件,首次运行下载的ChromeDriver时需要先给权限,执行终端命令:xattr -d com.apple.quarantine <你的chromedriver完整路径>
也可以右键点击ChromeDriver文件,选择打开,一次授权后后续就不会再拦截。 - 修改启动代码,显式传入ChromeOptions参数
Selenium 4.0.0默认使用W3C标准协议,空参数初始化ChromeDriver的方式存在兼容问题,修改代码如下:
如果是Firefox浏览器,按照同样逻辑显式传入System.setProperty("webdriver.chrome.driver", "<chromedriver location>"); ChromeOptions options = new ChromeOptions(); // 规避Mac环境下的沙箱运行限制 options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); driver = new ChromeDriver(options);FirefoxOptions实例初始化即可。 - 解决Java 16版本的兼容问题
Selenium 4.0.0本身存在对Java 9+模块化系统的适配bug,在Java 16环境下运行时会因为反射权限不足导致会话创建失败,可选择两种方案修复:- 给JVM添加启动参数:
--add-opens java.base/java.lang=ALL-UNNAMED - 直接将Selenium升级到4.1.0及以上的稳定版本,该版本已经修复了Java 16+的适配问题,无需修改其他代码即可正常运行。
- 给JVM添加启动参数:
内容的提问来源于stack exchange,提问作者kuldeep
相关产品推荐
相关产品推荐

