Как отправить аутентификацию Https с помощью Selenium в Python

Я хочу получить доступ с помощью Selenium (через) Python, URL-адреса, требующего аутентификации.

При посещении URL-адреса вручную открывается новое окно аутентификации, в котором мне нужно ввести имя пользователя и пароль. Только после нажатия «ОК» это окно исчезает, и я возвращаюсь на исходный сайт.

Поскольку я хочу посещать этот URL-адрес с интервалом для загрузки информации и хочу автоматизировать этот процесс в python.

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

  • driver.get("https://username:[email protected]/")
  • selenium.FireEvent("OK", "click")
  • driver.find_element_by_id("UserName")

Я не знаю фактический идентификатор элемента

Что мне удалось, так это загрузить мой профиль Firefox, в котором хранится информация для аутентификации, но мне все еще нужно подтвердить аутентификацию, нажав «ОК».

Есть ли способ предотвратить появление этого экрана?

Если нет, то как получить доступ к этой кнопке в форме аутентификации, из которой я не могу получить идентификационную информацию?


person user1746593    schedule 15.10.2012    source источник


Ответы (1)


Используя driver.get("https://username:[email protected]/"), вы должны войти в систему напрямую, без отображения всплывающего окна,

Что по этому поводу у вас не получилось?

ИЗМЕНИТЬ


Я не уверен, что это сработает, но после driver.get("https://username:[email protected]/")

Попробуйте принять оповещение.

Для предупреждения - @driver.switch_to.alert.accept на Ruby или driver.switchTo().alert().accept(); на Java

person Amey    schedule 15.10.2012
comment
Это действительно то, что я понял из всех примеров, которые я нашел, но это не работает для меня. Я все еще получаю всплывающее окно аутентификации с уже заполненными паролем и именем пользователя; однако мне все еще нужно нажать кнопку «ОК», чтобы продолжить. - person user1746593; 16.10.2012
comment
Пс. Я допустил ошибку в исходном тексте. Это не должно быть driver.get (username: [email protected]/), а вместо этого: driver .get (имя пользователя: [email protected]/). Я не знаю, насколько это важно. - person user1746593; 16.10.2012
comment
Предупреждение - адрес ДОЛЖЕН быть записан целиком. Итак, если аутентификация находится на example.com/somewebsite.shtml, то как добраться туда с помощью Selenium это driver.get("https://username:[email protected]/somewebsite.shtml/") - person Pavel Janicek; 16.10.2012
comment
У меня точно такая же проблема, и она лучше меня. Я не могу пройти аутентификацию, хотя она передана в URL-адресе. - person zabumba; 18.04.2016
comment
Не похоже, что диалог аутентификации воспринимается ChromeDriver как предупреждение. Так что ты не можешь это принять - person zabumba; 18.04.2016