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
相关产品推荐
相关产品推荐

