You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium实例化Opera 87驱动失败 版本不兼容报错如何解决

问题核心原因

报错已经直接给出根因:驱动与浏览器大版本完全不匹配。
你下载的v99版本OperaDriver仅支持99大版本的Opera浏览器,但启动时实际识别到的浏览器版本为101.0.4951.67,和你主观认为的87版本不一致——Opera默认开启静默自动更新,自动升级后不会修改安装目录的文件夹命名,你看到的路径中带的87.0.4390.45只是初始安装版本的目录名,不代表当前目录下的浏览器二进制文件实际版本。
升级Selenium版本没有解决问题是因为问题和Selenium版本无关,纯粹是驱动和浏览器版本对应关系错误。

可落地的解决步骤
  • 先确认浏览器真实版本:打开Opera,地址栏输入opera://settings/help,页面展示的才是当前浏览器实际运行的版本号,不要以安装文件夹的命名为准。
  • 下载与浏览器大版本完全一致的OperaDriver:基于Chromium内核的Opera要求驱动和浏览器大版本号必须严格对应,比如实际浏览器是101版本,就必须使用支持101版本的OperaDriver,跨大版本使用必然触发会话创建失败。
  • 如果需要固定使用旧版本浏览器+驱动组合,先关闭Opera自动更新:
    • 卸载当前已自动升级的Opera,安装你需要的目标版本(比如之前运行正常的87版本)
    • 禁用Opera相关的自动更新计划任务、系统服务,删除或重命名安装目录下的自动更新可执行文件,阻断后台静默升级逻辑
    • 下载对应旧版本的OperaDriver使用
  • 初始化驱动时显式指定路径,避免环境变量干扰:不要使用无参构造方法直接实例化OperaDriver,通过参数显式指定驱动位置、浏览器二进制文件位置,避免系统读取到其他路径下的旧驱动、其他版本浏览器,参考代码如下:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.opera.OperaDriver;
import org.openqa.selenium.opera.OperaOptions;

public class OperaDemo {
    public static void main(String[] args) {
        // 替换为你本地存放对应版本OperaDriver的实际路径
        System.setProperty("webdriver.opera.driver", "C:\\drivers\\operadriver.exe");
        OperaOptions options = new OperaOptions();
        // 替换为你要启动的Opera二进制文件实际路径
        options.setBinary("C:\\Users\\nesto\\AppData\\Local\\Programs\\Opera\\87.0.4390.45\\opera.exe");
        WebDriver driver = new OperaDriver(options);
        // 编写后续测试逻辑
    }
}
  • 排查依赖冲突:在项目根目录执行mvn dependency:tree,查看是否引入了多个不同版本的Selenium相关依赖,若有残留的低版本Selenium包,在pom中通过exclusion标签排除冲突即可。

内容的提问来源于stack exchange,提问作者Nestor Arias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:27:31