java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap 尝试使用 Chromedriver 和 Maven 执行测试时出错

2024-04-26

我是硒测试的新手,目前正在使用 Maven 观看一些 YouTube 视频。

今天,我尝试了一些代码并且工作正常,但是当访问一个商店页面并尝试搜索产品时,它给我“访问被拒绝”消息 于是我尝试了几种打开chrome而不是chromedriver的方法。

但我放弃了,愿意尝试另一个网页。但现在 chromedriver 无法打开(给出错误消息)。 operadriver、geckodriver等将在启动后立即关闭。

我收到此错误:

java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap com.google.common.collect.ImmutableMap.of(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'

我尝试在很多地方查找,但大多数人说它是番石榴版本,我不使用番石榴,即使我尝试将其添加到依赖项中......

我的代码是这样的:

public class TestYoutubeClass {
    WebDriver driver;
    @Before
    public void runDriver(){
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.kabum.com.br");

我尝试从头开始,但没有任何效果。 我正在使用 IntelliJ 在pom.xml我补充道:junit; selenium-java and webdrivermanager.

非常感谢每一个帮助。


该问题来自冲突的 Guava(传递依赖)版本。

它应该用WebDriverManager 版本 5.1.0 https://github.com/bonigarcia/webdrivermanager/blob/master/CHANGELOG.md#removed.

作为替代方案,您还可以使用<dependencyManagement>你的部分pom.xml to force最新Guava版本的解析:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>31.0.1-jre</version>
    </dependency>
  </dependencies>
</dependencyManagement>

或者从 WebDriverManager 中排除 Guava 依赖项(>= 5.1.0 不再需要):

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.0.3</version>
    <exclusions>
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
    </exclusions>
</dependency>

PS:为了确保 Maven 项目的依赖收敛,请考虑添加 Maven Enforcer 插件检测多个版本 https://rieckpil.de/top-3-maven-plugins-to-ensure-quality-and-security-for-your-project/早期的传递依赖。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap 尝试使用 Chromedriver 和 Maven 执行测试时出错 的相关文章

随机推荐