проблема с селенином и окном аутентификации - PullRequest
6 голосов
/ 25 мая 2019

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

Код этого в программе Python следующий:

driver = webdriver.Firefox(firefox_profile=profile)
...
driver.get('https://example.com')
driver.switch_to.alert.send_keys('123456' + Keys.TAB + '123456')
driver.switch_to.alert.accept()

Но вчера он выкинул эту ошибку:

selenium.common.exceptions.WebDriverException: Сообщение: приглашение пользователя Тип promptUserAndPass не поддерживается

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

Есть идеи?

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 31 мая 2019

Мне не хватает представителя, чтобы комментировать, и я знаю, что это не «решает» проблему, но я смог обойти эту проблему, используя Firefox ESR .

Вы можете установить ESR параллельно вашей основной установке Firefox, а затем указать, какой двоичный файл будет использовать FirefoxDriver:

driver = webdriver.Firefox(firefox_profile=profile, firefox_binary="/path/to/esr/binary")
3 голосов
/ 04 июня 2019

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

https://bugzilla.mozilla.org/show_bug.cgi?id=1556026

https://bugzilla.mozilla.org/show_bug.cgi?id=1556307

https://github.com/w3c/webdriver/issues/385

Мне удалось обойти эту проблему, установив Firefox 66.0 под другим именем, а затем упомянув его местоположение при вызове FirefoxDriver, как это сделал @ elead1.

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver import Firefox

path = FirefoxBinary("/path/to/Firefox2/firefox-bin")
browser = Firefox(firefox_binary=path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...