Robot Framework - Docker - Chromedriver - PullRequest
       27

Robot Framework - Docker - Chromedriver

0 голосов
/ 17 сентября 2018

Я пытаюсь настроить контейнер для тестирования с RobotFramework на Chrome.

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

Это мой Dockerfile

FROM python:3

RUN apt-get update -y

# Dependencies
RUN apt-get install -y  \
       apt-utils \
       build-essential \
       fonts-liberation \
       gconf-service \
       libappindicator1 \
       libasound2 \
       libcurl3 \
       libffi-dev \
       libgconf-2-4 \
       libindicator7 \
       libnspr4 \
       libnss3 \
       libpango1.0-0 \
       libssl-dev \
       libxss1 \
       python-dev \
       python-pip \
       python-pyasn1 \
       python-pyasn1-modules \
       unzip \
       wget \
       xdg-utils \
       xvfb \
       libappindicator3-1 \
       libatk-bridge2.0-0 \
       libgtk-3-0 \
       lsb-release

# Install Chrome for Selenium
RUN curl https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -o /chrome.deb
RUN dpkg -i /chrome.deb || apt-get install -yf
RUN rm /chrome.deb

# Install chromedriver for Selenium
RUN curl https://chromedriver.storage.googleapis.com/2.42/chromedriver_linux64.zip -o /usr/local/bin/chromedriver
RUN unzip -o /usr/local/bin/chromedriver -d /usr/local/bin
RUN chmod +x /usr/local/bin/chromedriver


WORKDIR /home

COPY . .

RUN pip install -e .

CMD [ "pybot","./tests/test.robot" ]

Это ошибка, которую я продолжаю получать

WebDriverException screenshot

WebDriverException: сообщение: неизвестная ошибка: не удалось запустить Chrome: аварийный выход (неизвестная ошибка: файл DevToolsActivePort не выполняется существовать) (процесс начался с местоположения Chrome / usr / bin / google-chrome больше не работает, поэтому ChromeDriver предполагая, что Chrome разбился.) (Информация о драйвере: chromedriver = 2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac), платформа = Linux 4.15.0-34-generic x86_64)

Мой тестовый робот:

*** Settings ***
Library  Selenium2Library

*** Variables ***


*** Test Cases ***
Connect
  Open Browser   https://google.es  Chrome

Я думаю, что что-то упустил, но я просто не знаю, что делать.

На моем setup.py:

install_requires=[
        'robotframework',
        'robotframework-selenium2library',
        'selenium'
    ]

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Недавно я столкнулся с этой проблемой, используя докер-контейнер и Amazon Linux, на которых выполнялись тесты роботов.Я обнаружил, что несмотря на то, что я добавил необходимые аргументы в тест фреймворка робота, как в приведенном ниже примере, Chrome зависал, даже не начиная с того же сообщения, которое вы получили.Я решил проблему, обновив настройки python в файле options.py внутри контейнера.

Я обновил свой док-контейнер с помощью приведенной ниже команды, чтобы установить опции в файле параметров python selenium chrome WebDriver options.py.В моем случае я использую Python версии 3.7 - поэтому вы хотите убедиться, что вы используете правильный путь.

RUN sed -i "s/self._arguments\ =\ \[\]/self._arguments\ =\ \['--no-sandbox',\ '--disable-dev-shm-usage'\]/" /usr/local/lib/python3.7/site-packages/selenium/webdriver/chrome/options.py

Пример Robot - это то, что я пробовал в рамках робота, который не исправилэта проблема.

${chrome_options} =     Evaluate sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
Call Method    ${chrome_options}   add_argument    headless
Call Method    ${chrome_options}   add_argument    disable-gpu
Call Method    ${chrome_options}   add_argument    no-sandbox
Call Method    ${chrome_options}   add_argument    disable-dev-sim-usage    ${options}=     Call Method     ${chrome_options}    to_capabilities
${options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
open browser  about:blank  ${BROWSER}  desired_capabilities=${options}

Я не уверен, решит ли это вашу проблему.Вы можете попробовать обновить файл вручную перед обновлением контейнера, чтобы посмотреть, поможет ли это.Я потратил много времени на устранение неисправностей.Было бы замечательно, если бы ошибка была немного более описательной.Удачи.

0 голосов
/ 17 сентября 2018

Пожалуйста, измените разрешение на изменение, оно будет работать

с

RUN chmod +x /usr/local/bin/chromedriver  

на

RUN chmod 777 /usr/local/bin/chromedriver
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...