Запуск Selenium в контейнере приводит к внезапным ошибкам селена, которых раньше не было

Всякий раз, когда я запускаю свои тесты на своем компьютере, они работают относительно нормально. По крайней мере, селен работает без проблем.

Как только я запускаю те же тесты в контейнере докеров, я начинаю работать со всеми видами ошибок, которые начал выдавать селен, например: «Элемент не кликабелен в точке ...», «Элемент не взаимодействует ...» и т. Д. .

Ничего из этого не происходит, когда я обычно запускаю тесты на своем компьютере.

У меня компьютер Linux Debian 9, докер 1.11, Chrome 72.0, chromedriver 2.41, селен 3.12. Тест выполняется с использованием py.test и в безголовом хроме.

Мой Dockerfile прост: я устанавливаю все пакеты для Python, помещаю туда свои тесты и запускаю их. Я запускаю сделанный на заказ файл Dockerfile, и у меня нет возможности использовать готовые файлы seleniumHQ.

Сначала я попробовал запустить демонстрационный тест, где впервые столкнулся с этой проблемой. Мне удалось решить эту проблему, отредактировав тестовый код, чтобы обойти исключение и повторить попытку. После того, как это удалось, я попытался запустить несколько более сложных тестов и продолжал сталкиваться с разными ошибками, с которыми раньше не сталкивался.

Каждое найденное мной решение было направлено на решение возникшего исключения, но я подозреваю, что существует более глубокая проблема, и я не могу понять, что это такое.

Повторяю: запуск тестов на моем компьютере (как без головы, так и без него) работает как шарм, но запуск тех же тестов в контейнере докеров завершается ошибкой с несколькими ошибками селена. По какой-то причине кажется, что тесты не работают должным образом, а селен продолжает выдавать ошибки.

Я уже некоторое время пытаюсь решить эту проблему и, похоже, не могу понять, в чем проблема.

Я хотел бы знать, ПОЧЕМУ возникает эта проблема и как устранить ее первопричину. Если это известная проблема и решение действительно состоит в том, чтобы устранять каждое исключение по мере его появления, я бы тоже хотел знать об этом.


person Avraam I.    schedule 11.06.2019    source источник


Ответы (1)


Насколько я мог найти и как я это решил, это просто отслеживать исключения и исправлять их по мере их появления.

Общие проблемные области, с которыми я столкнулся, были событие щелчка на кнопках / текстовом поле и очистка текста из текстового поля.

Решение включало:

  • Вызов webdriver.execute_script ('arguments [0] .click ();', element) для замены событий нажатия кнопки.
  • Вызов webdriver.execute_script ('arguments [0] .focus ();', element) для замены событий щелчка в текстовом поле.
  • Вызов webdriver.execute_script ('arguments [0] .value = "";', element) для замены текстового поля очищается.

С моей точки зрения, они решили большинство, если не все внезапные исключения, а остальное сработало, как задумано.

person Avraam I.    schedule 01.07.2019