求助:无法运行Selenium WebDriver 3.8.1项目及指定环境运行报错
嘿,我之前也碰到过类似的版本兼容坑,给你几个针对性的排查和解决方向:
针对iMac上Selenium WebDriver 3.8.1运行问题的解决方案
一、先揪出核心的版本兼容冲突
你的组件版本组合其实存在明显的适配问题:
- Selenium 3.8.1 官方推荐搭配的 GeckoDriver 版本是 0.20.0+,你用的0.19.1和Firefox 58.x的适配性极差,这是大概率导致启动失败的原因
- Guava 21/22 和 Selenium 3.8.1 不兼容,Selenium 3.8.1 内部依赖的是 Guava 23.0 版本,低版本Guava会触发大量方法调用失败、类加载异常的问题
二、分步修复操作
升级GeckoDriver到兼容版本
下载适配macOS(iMac)的GeckoDriver 0.20.1版本(这个版本完美匹配Firefox 58.0.2),替换你当前的0.19.1。记得把GeckoDriver的路径配置到系统PATH环境变量,或者在代码里显式指定绝对路径:System.setProperty("webdriver.gecko.driver", "/Users/你的用户名/路径/geckodriver");统一Guava依赖版本
如果你用Maven,直接在pom.xml里强制指定Guava 23.0版本,避免依赖冲突:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency>用Gradle的话,在build.gradle里添加:
implementation 'com.google.guava:guava:23.0'验证Firefox的系统配置
确保Firefox 58.0.2能正常手动启动,没有损坏。如果代码识别不到浏览器路径,可以显式指定Firefox二进制文件位置:FirefoxBinary binary = new FirefoxBinary(new File("/Applications/Firefox.app/Contents/MacOS/firefox")); FirefoxOptions options = new FirefoxOptions().setBinary(binary); WebDriver driver = new FirefoxDriver(options);
三、常见报错的快速定位
如果还是报错,先看具体错误信息:
- 要是出现
SessionNotCreatedException,90%是GeckoDriver和Firefox版本不兼容,按第一步升级即可 - 要是出现
NoSuchMethodError,基本就是Guava版本冲突,按第二步统一版本就能解决
内容的提问来源于stack exchange,提问作者user2805845
相关产品推荐
相关产品推荐

