升级Selenide v6.17.0后遇HasBiDi类找不到错误求助
解决Selenide v6.17.0 + Selenium v4.11.0 触发HasBiDi类缺失问题的经验
问题根源
这个错误本质是Selenium 4.11.0做了包结构调整——HasBiDi接口从org.openqa.selenium.bidi移到了org.openqa.selenium.devtools下,但Selenide v6.17.0的代码还在找旧路径下的这个类,自然加载失败。哪怕你单独引Selenium 4.11.0,只要项目里有旧版Selenide或者其他依赖还盯着旧路径,就会触发错误。
实用解决办法
强制统一Selenium版本(推荐)
要是想保留Selenide v6.17.0,就得把项目里所有Selenium核心依赖的版本锁死在4.11.0,避免其他依赖偷偷引入低版本组件搞冲突。
Maven可以在<dependencyManagement>里加这段:<dependencyManagement> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-api</artifactId> <version>4.11.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-remote-driver</artifactId> <version>4.11.0</version> </dependency> </dependencies> </dependencyManagement>Gradle这么写:
configurations.all { resolutionStrategy.force 'org.seleniumhq.selenium:selenium-java:4.11.0' resolutionStrategy.force 'org.seleniumhq.selenium:selenium-api:4.11.0' resolutionStrategy.force 'org.seleniumhq.selenium:selenium-remote-driver:4.11.0' }升级Selenide到修复版
Selenide v6.18.0及以后的版本已经修复了这个路径适配问题,直接更到最新稳定版就行,不用手动调Selenium版本。临时降级(应急用)
要是暂时不想折腾升级,直接把Selenide降到v6.16.0及以下,或者Selenium降到v4.10.0及以下,这俩版本的包结构能对上,不会出类缺失的问题。
额外提醒
- 用构建工具的依赖分析命令查一查,看看有没有其他依赖偷偷带了不同版本的Selenium。Maven跑
mvn dependency:tree,Gradle跑./gradlew dependencies就行。 - 清理本地仓库的缓存,比如Maven删
~/.m2/repository/org/openqa/selenium下的文件,Gradle删~/.gradle/caches/modules-2/files-2.1/org/openqa/selenium,避免旧包残留搞事情。
内容的提问来源于stack exchange,提问作者kRRRaptor
相关产品推荐
相关产品推荐

