org.openqa.selenium.WebDriverException: неизвестная ошибка: Chrome не удалось запустить: сбой с использованием ChromeDriver Selenium в Jenkins на Ubuntu 18.04 - PullRequest
5 голосов
/ 05 мая 2020

Chrome нестабилен на моем Jenkins. Когда я запускаю сборку 5 раз, она выполняется 1-2 раза, а в остальных 3 раза возникает ошибка выше.

Снимок ошибки: enter image description here

Code for Chrome :

ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver","/usr/local/bin/chromedriver");
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
driver = new ChromeDriver(options);
driver.get("https://mywebsite.com");
     

Some steps I have already taken :

  1. Provided 777 permission to google chrome and chrome driver

  2. Set : Start Xvfb before the build, and shut it down after to True in Jenkins build setting введите описание изображения здесь

  3. ChromeDriver 81.0.4044.69

  4. Google Chrome 81.0.4044.129

  5. Ubuntu 18.04.4 LTS (GNU / Linux 4.15.0-99-generi c x86_64)

1 Ответ

2 голосов
/ 11 мая 2020

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

snapshot

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


Глубокое погружение

Просмотр предоставленного вами снимка трассировки стека ошибок, хотя вы упомянули об использовании ChromeDriver 81.0.4044.69 и Google Chrome 81.0.4044.129 , но, похоже, есть несоответствие между версиями различных двоичных файлов, которые вы используете, возможно Chrome браузер не установлен по умолчанию в вашей системе или из-за несоответствия JDK. Кроме того, ChromeDriver 81.0.4044.69 (2020-03-17) был немного нестабильным, и его заменили ChromeDriver 81.0.4044.138 (2020-05-05)

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

Chrome_binary_expected_location

1 Для систем Linux ChromeDriver ожидает, что /usr/bin/google-chrome будет символической ссылкой на фактический двоичный файл Chrome.

Вы можете найти подробное обсуждение в Какое расположение ChromeDriver по умолчанию и для установки Chrome на Windows


Решение

Если вы используете исполняемый файл Chrome в нестандартном месте, вам необходимо переопределить Chrome двоичное расположение следующим образом:

  • Решение на основе кода:

    System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
    ChromeOptions options = new ChromeOptions();
    options.setBinary('/usr/bin/google-chrome');    //chrome binary location
    options.addArguments("--headless");
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-dev-shm-usage");
    WebDriver driver = new ChromeDriver(options);
    driver.get("https://www.google.com/");
    //execute the remaining steps
    driver.quit();
    
  • Дополнительные соображения - убедитесь в следующем:

    • JDK обновлен до текущих уровней JDK 8u251 .
    • Selenium обновлен до текущих уровней Версия 3.141.59 .
    • ChromeDriver обновлен до текущего ChromeDriver v81.0.4044.138 уровня.
    • Chrome обновлен до текущий Chrome Версия 81.0.4044.138 уровень. (согласно примечания к выпуску ChromeDriver v80.0 )
    • Очистите вашу рабочую область проекта с помощью IDE и Перестройте ваш проект только с необходимыми зависимостями.
    • Выполните @Test как не root пользователя.
    • Всегда вызывать driver.quit() внутри tearDown(){} метод закрытия и уничтожения экземпляров WebDriver и Web Client .

Ссылки

Вы можете найти пару соответствующих обсуждений в:

...