执行Maven测试时遇Selenium WebSocket连接失败问题求助
解决Selenium 4.4.0中WebSocket连接失败导致TestNG setUp失败的问题
以下是针对该问题的具体排查和解决步骤:
1. 确保ChromeDriver与Chrome浏览器版本严格匹配
Selenium 4.x对ChromeDriver和Chrome的版本一致性要求严格,大版本必须完全对应(例如Chrome 108.x对应ChromeDriver 108.x)。
- 打开Chrome浏览器,输入
chrome://version/查看当前浏览器版本 - 下载对应版本的ChromeDriver替换项目驱动;或使用WebDriverManager自动管理版本,代码示例:
import io.github.bonigarcia.wdm.WebDriverManager; // 在setUp方法开头添加 WebDriverManager.chromedriver().setup();
2. 调整Chrome启动参数,修复WebSocket连接限制
添加必要的启动参数解决跨域和权限问题:
ChromeOptions options = new ChromeOptions(); // 允许跨域连接,解决Selenium 4.x的WebSocket跨域拦截 options.addArguments("--remote-allow-origins=*"); // 禁用沙箱模式,解决Windows下权限相关问题 options.addArguments("--no-sandbox"); // 禁用/dev/shm使用,避免资源不足导致的连接失败 options.addArguments("--disable-dev-shm-usage"); // 禁用Web安全限制(仅测试环境使用) options.addArguments("--disable-web-security"); WebDriver driver = new ChromeDriver(options);
3. 排查系统防火墙与代理干扰
- 临时关闭Windows防火墙,重新执行测试,确认是否是防火墙拦截了localhost的WebSocket连接
- 如果使用代理服务器,需在ChromeOptions中排除localhost的代理:
Proxy proxy = new Proxy(); proxy.setNoProxy("localhost,127.0.0.1"); options.setProxy(proxy);
4. 升级Selenium到最新稳定版本
Selenium 4.4.0存在已知的WebSocket兼容性问题,升级到最新稳定版可修复此类问题。修改Maven依赖:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.15.0</version> <!-- 替换为最新稳定版 --> </dependency>
5. 简化TestNG setUp方法排查逻辑问题
暂时移除setUp方法中除驱动初始化外的其他逻辑,验证是否是业务代码干扰了驱动初始化。确保没有提前调用driver.quit()或其他破坏驱动状态的代码。
内容的提问来源于stack exchange,提问作者Someshwar Gore
相关产品推荐
相关产品推荐

