You need to enable JavaScript to run this app. ChromeDriver从89升级至91后使用Actions类抛出org.openqa.selenium.JavascriptException
优惠活动
大模型
产品
解决方案
定价
更多

ChromeDriver从89升级至91后使用Actions类抛出org.openqa.selenium.JavascriptException

ChromeDriver升级至91版本后调用Actions类抛出Javascript异常解决方案

问题根因

ChromeDriver 90及以上版本默认强制启用W3C标准协议,而Selenium 3.x及更低版本的Actions类内部实现仍采用旧版非W3C的JavaScript注入逻辑,二者不兼容导致调用Actions时抛出JS执行异常。

解决方案

  • 方案1(最优):升级Selenium依赖至4.0及以上版本
    Selenium 4.x对W3C标准做了全量适配,重构了Actions类的实现逻辑,可从根本上解决兼容问题。Maven依赖示例:
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.8.0</version> <!-- 可替换为最新稳定版 -->
    </dependency>
    
  • 方案2(临时兼容,无需升级Selenium):初始化ChromeDriver时关闭W3C模式
    若当前项目暂时无法升级Selenium版本,可在ChromeOptions中添加配置,强制使用旧版协议交互:
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("w3c", false);
    WebDriver driver = new ChromeDriver(options);
    
  • 排查验证点:确认Chrome浏览器大版本与ChromeDriver大版本完全匹配,91版ChromeDriver必须对应91版Chrome浏览器,大版本不一致也会引发各类兼容异常。

效果验证

配置完成后可运行简单测试用例验证功能是否恢复:

// 模拟鼠标悬停点击操作测试Actions可用性
Actions actions = new Actions(driver);
WebElement targetElement = driver.findElement(By.id("test-target"));
actions.moveToElement(targetElement).click().perform();

内容的提问来源于stack exchange,提问作者Rohit Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 02:24:02