首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在red hat 7.7中使用java的Selenium 3.141.59无法创建新的chrome驱动程序

在red hat 7.7中使用java的Selenium 3.141.59无法创建新的chrome驱动程序
EN

Stack Overflow用户
提问于 2020-05-08 13:24:04
回答 1查看 329关注 0票数 0

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

同样的代码在我本地的mac上运行良好,但是当它被部署到red hat时,它不能创建chrome驱动程序。

pom xml中的selenium依赖项

代码语言:javascript
复制
<!-- 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驱动程序的方法:

代码语言:javascript
复制
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驱动程序执行良好,并且

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

EN

回答 1

Stack Overflow用户

发布于 2020-05-18 03:37:33

以防其他人遇到类似的问题。问题是在服务器上的$PATH上设置了一个旧的google guava库,导致了上面提到的问题。

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>14.0</version>
</dependency>

一旦从路径中删除了依赖项,下面就是运行selenium驱动程序所需的全部内容。

代码语言:javascript
复制
<!-- 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>selenium-server</artifactId>
    <version>3.141.59</version>
</dependency>

如果其他人有上述问题,请检查您的类路径是否存在依赖问题,并确保旧的google guave库不在您的类路径中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61672554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档