Невозможно создать chromeOptions с помощью драйвера selenium chrome

Я использую драйвер хрома селена с версией 3.6.0 и используя google-guava 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);

Возможный дубликат: stackoverflow.com/questions/49280240/…

VaL 04.06.2018 09:47

что такое proxyConfig в вашем коде?

cruisepandey 04.06.2018 10:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
2 875
1

Ответы 1

Из вашего вопроса о вашем конкретном сценарии использования неясно, почему вы пытаетесь сигнализировать Клиент Selenium v ​​3.6.0 и Google-гуава 23.0 по отдельности.

Чтобы не усложнять,

  • Клиент Selenium v ​​3.6.0 использует гуава v23.0
  • Примечания к выпуску Клиент Selenium v ​​3.5.1 четко упоминают следующее:
  • Bump guava to version 23.

Так что я не вижу там никаких проблем.

Однако, как конечный пользователь, вместо того, чтобы выбирать отдельные jar-файлы из нескольких выпусков selenium-java-X.Y.Z.zip, пользователю следует рассмотреть возможность полного удаления всех связанных с Селенбанки из старой сборки и замены на новый банки из новой сборки.

Эта конкретная проблема

Это сообщение об ошибке ...

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;) с Selenium, gradle и ChromeDriver вам необходимо использовать строку System.setProperty() для установки двоичного пути ChromeDriver (не хромированный двоичный путь). Для этого вы должны загрузить двоичный файл ChromeDriver из ChromeDriver - WebDriver для Chrome и поместить его в свою систему и указать абсолютный путь от ChromeDriver до линии System.setProperty(). Следовательно, вы должны использовать строку:

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

Я уже устанавливаю путь к драйверу в своем коде, пожалуйста, взгляните на это.

Bhagwati Malav 04.06.2018 10:27

Другие вопросы по теме