Karate调用webdriver对接Selenium Grid4报UnsupportedCommandException问题咨询
Karate 1.1.0 对接Selenium Grid4 运行失败问题解答
问题根因
你遇到的org.openqa.selenium.UnsupportedCommandException: POST /session/5d0b30168667aba9b10a01f9091d22cb/execute/sync报错确实是Selenium Grid4的架构变更直接导致的。
Karate 1.1.0内置的Selenium客户端为3.x版本,默认使用JSON Wire Protocol和WebDriver服务通信。而Selenium Grid4完全基于W3C WebDriver规范实现,废弃了旧JSON Wire Protocol的多个接口,其中就包含报错指向的同步脚本执行接口,因此旧版本Karate的请求会被Grid4直接拒绝,而低版本Grid3保留了旧协议兼容,所以可以正常运行。
可行解决方案
- 优先选择升级Karate版本到1.2.0及以上。Karate 1.2.0已将内置Selenium依赖升级到4.x版本,默认适配W3C WebDriver规范,原有测试用例不需要做任何修改即可直接对接Selenium Grid4运行。
- 若暂时无法升级Karate版本,可在启动Selenium Grid4节点时添加
--allow-insecure "jsonwire_protocol"参数,开启旧协议兼容模式,临时适配Karate 1.1.0的请求。该兼容模式属于过渡方案,后续会被Grid4官方逐步废弃,不建议长期使用。 - 可尝试在Karate的WebDriver初始化配置中添加
w3c: true参数,强制底层调用使用W3C规范的请求格式,部分场景下不需要升级Karate版本即可适配Grid4。
内容的提问来源于stack exchange,提问作者Raghunath Rao Chouhan
相关产品推荐
相关产品推荐

