Исключение Robot framework WebDriverException: Сообщение: неизвестная ошибка: Chrome не удалось запустить:

#python-3.x #google-chrome #robotframework

#python-3.x #google-chrome #robotframework

Вопрос:

Я наблюдаю приведенную ниже ошибку при запуске открытого тестового примера браузера Chrome с использованием robot framework.

WebDriverException: Сообщение: неизвестная ошибка: Chrome не удалось запустить: произошел аварийный выход

(неизвестная ошибка: файл DevToolsActivePort не существует)

(Процесс, запущенный из chrome location / usr / bin / google-chrome, больше не запущен, поэтому ChromeDriver предполагает, что Chrome разбился.) (Информация о драйвере: chromedriver = 72.0.3626.69 (3c16f8a135abc0d4da2dff33804db79b849a7c38), платформа = Linux 4.4.0-31-generic x86_64)

вставил скрипт робота ниже :

 *** settings ***

Library  Selenium2Library


*** Variables ***

${Browser}  Chrome
${URL}  https://www.google.com

*** Test Cases ***
TC001 Browser Start and Close
    Open Browser  ${URL}  ${Browser}
  

используемые версии chrome :

  • Версия Chrome 72
  • ChromeDriver 72.0.3626.69

Ответ №1:

Я решил это! используя --no-sandbox

 ${chrome_options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
Call Method    ${chrome_options}    add_argument    test-type
Call Method    ${chrome_options}    add_argument    --disable-extensions
Call Method    ${chrome_options}    add_argument    --headless
Call Method    ${chrome_options}    add_argument    --disable-gpu
Call Method    ${chrome_options}    add_argument    --no-sandbox
Create Webdriver    Chrome    chrome_options=${chrome_options}
  

Вместо

 Open Browser    about:blank    headlesschrome
Open Browser    about:blank    chrome
  

Комментарии:

1. Боже, у меня это сработало. Моя ситуация такова, что у нас есть конвейер, который использует образ Ubuntu и запускает robot framework. На моем локальном Mac это работает только с использованием открытого браузера, но не на образе Ubuntu с помощью docker. В любом случае, сейчас это работает. Я попробовал несколько других вариантов, но этот был единственным, который работал. Спасибо!

Ответ №2:

Вот подход, который сработал для меня. Мы должны передать chrome_options и путь к веб-драйверу chrome при открытии браузера. Пожалуйста, найдите код ниже.

 *** Settings ***
Library           Selenium2Library

*** Variables ***
${URL}            https://www.google.com
${CHROMEDRIVER_PATH}        /usr/local/bin/chromedriver

*** Keywords ***
Open Website
    ${chrome_options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
    Call Method    ${chrome_options}    add_argument    --no-sandbox
    Call Method    ${chrome_options}    add_argument    --headless
    Open Browser    ${URl}    chrome    options=${chrome_options}      executable_path=${CHROMEDRIVER_PATH}

*** Settings ***
Suite Setup       Open Website
  

ПРИМЕЧАНИЕ: chrome_options и executable_path были переданы непосредственно в команду Открыть браузер вместо создания веб-драйвера (Потому что по какой-то причине создание веб-драйвера у меня не сработало. Но передача аргументов непосредственно в браузер сделала)

Комментарии:

1. Я не могу открыть браузер, потому что я планирую запустить это в gitlab CI

2. У нас есть --headless аргумент. Поэтому в идеале он должен запускаться в CI Gitlab в безголовом режиме.

Ответ №3:

Вам также необходимо обновить Selenium, который вы получите, если используете новейшую версию SeleniumLibrary (из названия было удалено «2»).

Обновите свои скрипты для нового имени и обновите с помощью:

 pip install -U robotframework-seleniumlibrary
  

Ответ №4:

Попробуйте изменить драйвер Chrome на версию 2.45 на основе http://chromedriver.chromium.org/downloads версия 72 поддерживается 2.45. 🙂