运行Selenium ChromeDriver测试代码时遇启动错误求助
问题分析与解决方案
核心问题拆解
你遇到的关键故障链:
- geckodriver启动失败:Selenium 4.4.0尝试向geckodriver传递
--websocket-port参数,但你的geckodriver版本不支持该参数,导致驱动进程直接终止; - 会话创建失败:驱动进程提前终止触发
SessionNotCreatedException,无法启动浏览器会话; - 代码与运行不匹配:错误栈显示运行的是
newpackage.Login类(使用FirefoxDriver),但你提供的测试代码是neoproject.PG1类(使用ChromeDriver),存在运行目标类不符的情况; - 代码语法错误:单个Java源文件中存在两个
public类(PG1和MyClass),会导致编译失败。
具体解决步骤
1. 修复geckodriver与Selenium版本兼容问题
Selenium 4.0+新增了--websocket-port参数,旧版geckodriver(v0.30.0之前)不支持该参数,二选一解决:
- 推荐方案:升级geckodriver到v0.30.0或更高版本,同时确保和Firefox浏览器版本匹配(Firefox 91+适配geckodriver v0.30.0+);
- 备选方案:降级Selenium到3.x版本(不推荐,3.x已停止维护)。
2. 修正代码错误
- 删除多余的
public class MyClass,单个Java源文件只能有一个public类; - 检查运行配置:确保启动的是你编写的
PG1类,而非错误栈中的Login类。
如果继续使用ChromeDriver,额外确认:
- Chrome浏览器版本与chromedriver版本完全匹配(如Chrome 114对应chromedriver 114.x);
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe")中的路径正确,chromedriver.exe确实存在于该位置。
3. 消除SLF4J警告(可选)
该警告不影响测试运行,仅缺少日志实现。若要消除,在项目依赖中添加SLF4J的具体实现(以Maven为例):
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.36</version> <scope>test</scope> </dependency>
内容的提问来源于stack exchange,提问作者rain...
相关产品推荐
相关产品推荐

