带有Red Hat 7.7中Java的硒3.141.59无法创建新的Chrome驱动程序

问题描述 投票:0回答:1

获取以下错误消息:处理程序调度失败;嵌套的异常是java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava / lang / String; Ljava / lang / Object; Ljava / lang / Object; Ljava / lang / Object;)V

相同的代码在我的本地Mac上运行良好,但是当将其部署到Red Hat时,它无法创建chrome驱动程序。

pom xml中的硒依赖关系

<!-- Selenium Driver Dependencies-->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-chrome-driver</artifactId>
    <version>3.141.59</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>htmlunit-driver</artifactId>
    <version>2.33.2</version>
</dependency>
<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>1.28.0</version>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>

这是获取chrome驱动程序的方法:

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.PostConstruct;
import java.util.concurrent.TimeUnit;


@PostConstruct
public void setChromDriverLocation(){
    System.setProperty("webdriver.chrome.driver", this.chromeDriverLocation);
}

public WebDriver getChromeDriver(Long timeoutInSeconds){
    this.LOGGER.info(String.format("Preparing to retrieve chrome driver %s", this.chromeDriverLocation));
    ChromeOptions options = new ChromeOptions();
    options.addArguments("headless");
    options.addArguments("disable-gpu");
    if(StringUtils.hasText(this.chromeBinaryPath)){
        this.LOGGER.info(String.format("Setting binary path %s", this.chromeBinaryPath));
        options.setBinary(this.chromeBinaryPath);
    }
    this.LOGGER.info("Getting chrome driver");
    WebDriver chromeDriver = new ChromeDriver(options);
    chromeDriver.manage().timeouts().implicitlyWait(timeoutInSeconds, TimeUnit.SECONDS);
    this.LOGGER.info("Successfully retrieved chrome driver");
    return chromeDriver;
}

在以下行失败:WebDriver chromeDriver =新的ChromeDriver(选项);

google-chrome版本:Google Chrome 81.0.4044.138并安装了相同版本的chrome驱动程序。

Chrome驱动程序执行正常,然后>]

请让我知道任何解决方案或缺少的依赖项。

获取以下错误消息:处理程序调度失败;嵌套异常为java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava / lang / String; Ljava / lang / Object; ...

linux google-chrome selenium-webdriver selenium-chromedriver google-chrome-headless
1个回答
0
投票

[如果其他人有类似的问题。问题是在服务器上的$ PATH上设置了旧的Google番石榴库,导致了上述问题。

© www.soinside.com 2019 - 2024. All rights reserved.