
qaf 3.2.0 仅支持 selenium 4.3.x 及以下版本,使用 4.4+(如 4.11.0)会导致 webdriver 初始化失败、websocket 连接被拒(http 403)、页面空白等典型问题;正确方案是升级至 qaf 4.0.0-rc1 或降级 selenium 至 4.3.x。
qaf 3.2.0 仅支持 selenium 4.3.x 及以下版本,使用 4.4+(如 4.11.0)会导致 webdriver 初始化失败、websocket 连接被拒(http 403)、页面空白等典型问题;正确方案是升级至 qaf 4.0.0-rc1 或降级 selenium 至 4.3.x。
在基于 Java 的自动化测试实践中,QAF(Qmetry Automation Framework)与 Selenium WebDriver 的版本协同至关重要。您遇到的“URL 不打开、页面空白、ChromeDriver 启动后报 Invalid Status code=403 和 Unable to establish websocket connection”等问题,并非环境配置或代码逻辑错误,而是典型的版本不兼容引发的协议层冲突。
? 根本原因分析
Selenium 4.4 起全面转向 W3C WebDriver 协议的增强实现,并重构了 DevTools WebSocket 连接机制(如 /devtools/browser/{id} 端点的鉴权与生命周期管理)。而 QAF 3.2.0 内置的底层 HTTP 客户端(基于 AsyncHttpClient + Netty)未适配该变更,导致:
- ChromeDriver 成功启动浏览器进程,但 QAF 尝试建立 DevTools WebSocket 连接时被 Chrome 拒绝(返回
403 Forbidden); - 驱动初始化流程中断,
driver.get(url)无法执行,页面保持空白; - 日志中可见
Detected dialect: W3C(协议识别正常),但紧随其后出现WebSocket$Listener onError异常。
✅ 官方兼容性确认:
- QAF 3.2.0 官方支持 Selenium 范围为 3.6.0 – 4.3.x(含 4.0.0、4.1.2、4.3.0);
- QAF 4.0.0-RC1(及后续正式版)才完整支持 Selenium 4.4+,包括 4.11.0。
? 正确解决方案(二选一)
✅ 方案一:降级 Selenium 至 4.3.x(推荐短期修复)
修改 pom.xml,将 Selenium 版本锁定为 4.3.0(经广泛验证稳定):
<properties><qaf.version>3.2.0</qaf.version><selenium.version>4.3.0</selenium.version><!-- 替换原 4.11.0 --></properties><dependencies><dependency><groupid>org.seleniumhq.selenium</groupid><artifactid>selenium-java</artifactid><version>${selenium.version}</version></dependency><dependency><groupid>com.qmetry</groupid><artifactid>qaf</artifactid><version>${qaf.version}</version></dependency></dependencies>
⚠️ 注意:删除项目中可能存在的重复
<selenium.version></selenium.version>声明(如问题中所示两个同名 property),避免 Maven 解析歧义。
✅ 方案二:升级 QAF 至 4.0.0-RC1(推荐长期演进)
QAF 4.0.0-RC1 已重构网络通信模块,原生兼容 Selenium 4.11.0+。更新依赖即可:
<properties><qaf.version>4.0.0-RC1</qaf.version><selenium.version>4.11.0</selenium.version></properties>
? 提示:QAF 4.x 引入了对 WebDriver BiDi API、Fetch Interception 等新特性的支持,更适合现代 Web 应用测试场景。
? 验证建议
升级/降级后,务必执行以下检查:
- 清理本地 Maven 仓库缓存:
mvn clean dependency:purge-local-repository; - 确保 ChromeDriver 版本与 Chrome 浏览器匹配(推荐使用 QAF 自动驱动管理);
- 在测试中显式设置超时,避免因初始化延迟误判失败:
// 在 testng.xml 或 properties 中 driver.init.retry.timeout=15
? 总结
版本兼容性不是“越高越好”,而是“精准匹配”。QAF 3.2.0 是一个成熟稳定的版本,但其技术栈止步于 Selenium 4.3;强行注入更高版本只会触发底层协议失配。面对此类问题,请始终优先查阅 QAF 官方兼容性矩阵 —— 它比 Stack Overflow 的零散经验更权威、更及时。真正的自动化稳定性,始于一次谨慎的依赖治理。










