org.openqa.selenium.WebDriverException: неизвестная ошибка: не удалось запустить Chrome: сбой (Chrome без заголовка) - PullRequest
0 голосов
/ 13 июня 2018

Я использую Chrome без головы на Centos, с версией Chrome без головы 2.38 и стабильной версией google-chrome 67.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();
    if(MapUtils.isNotEmpty(capabilites)) {
      for (Map.Entry<String, String> entry : capabilites.entrySet()) {
        chromeOptions.setCapability(entry.getKey(), entry.getValue());
      }
    }
    // proxy configuration
    /*Proxy proxy = new Proxy();
    proxy.setProxyType(Proxy.ProxyType.MANUAL);
    proxy.setHttpProxy(proxyConfig.getProxyHost());
    proxy.setSocksUsername(proxyConfig.getProxyUsername());
    proxy.setSocksPassword(proxyConfig.getProxyPassword());
    chromeOptions.setCapability(CapabilityType.PROXY, proxy);*/
    log.warn("chorme driver created ");
    return new ChromeDriver(chromeOptions);

Параметры хрома:

 "--headless", 
        "----disable-gpu", 
        "--ignore-certificate-errors", 
        "window-size=1920,1080"

Ниже приводитсявыдано сообщение об ошибке в последней строке:

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed
  (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Linux 4.9.77blibli.com x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.11 seconds
Build info: version: ‘3.6.0’, revision: ‘6fbf3ec767’, time: ‘2017-09-27T15:28:36.4Z’
System info: host: ‘csrapp-02’, ip: ‘127.0.1.1’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.9.77dwdwde.com’, java.version: ‘1.8.0_101’
Driver info: driver.version: ChromeDriver

Я проверил Chrome и версию Chromeriver, он совместим.Не мог понять, почему он не работает на Centos?Тот же код отлично работает на Mac

POM

<dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.12.0</version>
    </dependency>

1 Ответ

0 голосов
/ 13 июня 2018

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

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed

... подразумевает, что ChromeDriver не смог инициировать / создать новый WebBrowser т.е. Браузер Chrome сеанс.

Поскольку вы используете Headless Chrome на CentOS , стоит упомянуть, что согласно обсуждению ПолучениеНачинается с Headless Chrome --disable-gpu is Temporarily needed if running on Windows.

--disable-gpu \                # Temporarily needed if running on Windows.

Однако ваша главная проблема заключается в несовместимости между версиямииспользуемые вами двоичные файлы:

  • Вы используете chromedriver = 2,38
  • Вы используете хром = 67,0
  • Ваш Клиент Selenium версия 3.6.0 из 2017-09-27T15: 28: 36.4Z , что почти год старше.
  • Ваша версия JDK - 1.8.0_101 , что довольно древний .

Таким образом, существует явное несоответствие между JDK v8u101 , Selenium Client v3.6.0 , ChromeDriver v2.38 и Chrome Browser v67.0

Решение

  • Обновление JDK до последних уровней JDK 8u171 .
  • Обновление Selenium до текущих уровней Версия 3.12.0 .
  • Обновление ChromeDriver до текущей версии ChromeDriver v2.40 уровень
  • Сохранить Chrome версия между Chrome v66-68 уровнями.( согласно примечаниям к выпуску ChromeDriver v2.40 )
  • Очистить ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Используйте CCleaner , чтобы стереть все рутинные операции ОС до и после выполнения вашего Test Suite .
  • Если базовая версия Web Client устарела, удалите ее через Revo Uninstaller и установите последнюю версиюGA и выпущенная версия Веб-клиент .
  • Возьмите Перезагрузка системы .
  • Выполните @Test.
  • Всегдавызовите driver.quit() в методе tearDown(){}, чтобы закрыть и уничтожить экземпляры WebDriver и Web Client изящно.
...