无法使用selenium chrome驱动程序创建chromeOptions

时间:2018-06-04 07:20:11

标签: java selenium selenium-webdriver selenium-chromedriver headless-browser

我使用版本为3.6.0的selenium chrome驱动程序 并使用谷歌番石榴23.0。 当我这样做时:

 ChromeOptions chromeOptions = new ChromeOptions();

它出现以下错误:

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V

    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
    at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32)
    at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:329)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)

我也检查了这个:https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver/3.6.0 任何人都可以帮助我在这里使用什么版本的番石榴?

代码:

System.setProperty("webdriver.chrome.driver", driverPath);
    log.warn("chrome driver path is : {}", driverPath);
    List<String> options = proxyConfig.getChromeOptions();
    ChromeOptions chromeOptions = new ChromeOptions();
      chromeOptions.addArguments(options);
    Map<String, String> capabilites = proxyConfig.getCapabilities();
    for(Map.Entry<String, String> entry : capabilites.entrySet()) {
      chromeOptions.setCapability(entry.getKey(), entry.getValue());
    }
    return new ChromeDriver(chromeOptions);

1 个答案:

答案 0 :(得分:0)

从您的问题中不清楚您的具体用法,为什么您要分别发出 Selenium Client v 3.6.0 google-guava 23.0 的信号。

为了简单起见,

  
      
  • Bump guava到23版。
  •   

所以,我没有看到任何问题。

但是,作为最终用户而不是从多个 selenium-java-XYZzip 版本中选择单个jar,用户应该考虑完全删除所有 Selenium 相关的 jar 来自旧版本,并替换为新版本中的新 jars

这个特殊问题

此错误消息......

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V

...表示 Java客户端无法找到ChromeDriver()

在没有代码试用的情况下分析真正的问题将很难。但是,根据java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;) with Selenium, gradle and ChromeDriver,您需要使用System.setProperty()行来设置 ChromeDriver 二进制路径(不是Chrome二进制路径)。为此,您必须从ChromeDriver - WebDriver for Chrome下载 ChromeDriver 二进制文件并将其放入系统中,并通过System.setProperty()提及 ChromeDriver 的绝对路径线。因此,您必须使用以下行:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
// configurations through chromeOptions 
WebDriver driver = new ChromeDriver(chromeOptions );