Запуск Selenium в контейнере приводит к внезапным ошибкам селена там, где их раньше не было - PullRequest
0 голосов
/ 11 июня 2019

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

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

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

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

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

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

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

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

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

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

1 Ответ

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

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

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

Решение проблемы:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...