Python-3.x-Selenium: смена используемого драйвера во время пребывания на сайте - PullRequest
1 голос
/ 21 июня 2019

В настоящее время я тестирую сайт с python-selenium, и до сих пор он работает довольно хорошо.Я использую webdriver.Firefox(), потому что это значительно облегчает процесс разработки, если вы видите, что на самом деле делает программа тестирования.Однако тесты очень медленные.В какой-то момент программа должна нажать на 30 элементов, чтобы добавить их в список, что занимает около 40 секунд, потому что браузер реагирует так ужасно медленно.Поэтому после поиска в Google, как сделать селен быстрее, я подумал об использовании браузера без головы, например, webdriver.PhantomJS().

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

Поэтому я хотел открыть сайт в Firefox, войти в систему и вручную ввести код с картинки.Затем я продолжаю сеанс в безголовом PhatomJS, что позволяет мне быстро запускать код.Таким образом, в основном речь идет о изменении среднего кода используемого драйвера .

Я знаю, что драйвер полностью очищен при создании.Поэтому, если я создам новый драйвер после входа в Firefox, я выйду из системы в другом драйвере.Так что, думаю, мне нужно было бы передать некоторую информацию о сеансе между двумя драйверами.

Может ли это как-то сработать?Если да, как я могу это сделать?Честно говоря, я не знаю много о реальной функциональности веб-крючков, куки-файлов и хранении информации о входе в систему в целом.Итак, как бы вы, ребята, справились с этой проблемой?

С нетерпением жду ваших ответов, Тобиас

Примечание: я уже задавал похожий вопрос, который был помечен как дубликат этого.Тем не менее, другой вопрос обсуждает, как восстановить соединение с браузером после выхода из сценария.Это не то, что я собираюсь сделать.Я хочу изменить средний скрипт используемого драйвера, оставаясь в системе на сайте.Поэтому я удалил свой старый вопрос и создал этот новый, более подходящий.Я надеюсь, что все в порядке.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Веб-сайт «распознает» пользователя с помощью Cookies - специального HTTP-заголовка , который отправляется с каждым запросом, чтобы веб-сайт знал, что пользователь аутентифицирован, имеет те или иныеразрешения и т. д.

К счастью Selenium предоставляет функции, позволяющие манипулировать файлами cookie , поэтому все, что вам нужно сделать, - это сохранить файлы cookie из Firefox с использованием метода WebDriver.get_cookies () иПосле этого добавьте их в PhantomJS с помощью метода WebDriver.add_cookie () .

firefoxCookies = firefoxDriver.get_cookies()
for cookie in firefoxCookies:
    phantomJSDriver.add_cookie(cookie)
0 голосов
/ 21 июня 2019

Реальное решение для этого - попросить команду разработчиков добавить тестовый режим (недоступный в Production), где решение Captcha либо предоставляется где-то в коде страницы, либо Captcha пропускается.

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

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