Как отправить HTTP-аутентификацию с помощью Selenium python-binding webdriver
Я использую привязку Selenium python для настройки теста автоматизации для нашего веб-приложения. Я столкнулся с проблемой при тестировании интернета на бета-сервере, потому что для него требуется аутентификация HTTP для имени пользователя и пароля интрасети.
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://somewebsite.com/")
Мне нужно отправить имя пользователя и пароль для всплывающего диалога при доступе http://somewebsite.com/
есть аккуратный способ сделать это?
2 ответов
Я нашел решение этого вопроса:
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference('network.http.phishy-userpass-length', 255)
driver = webdriver.Firefox(firefox_profile=profile)
driver.get("https://username:password@somewebsite.com/")
часть FirefoxProfile должна закрыть диалоговое окно подтверждения, потому что по умолчанию Firefox покажет всплывающее окно для предотвращения фишинга.
другое решение:
войти с запросами python, получить куки, и нажмите куки в браузере Селена
import requests
from selenium import webdriver
from requests.auth import HTTPBasicAuth
session = requests.Session()
www_request = session.get('http://example.com', auth=HTTPBasicAuth('username','password'), allow_redirects=False)
driver = webdriver.Remote(...)
#chrome needed to open the page before add the cookies
driver.get('http://example.com')
cookies = session.cookies.get_dict()
for key in cookies:
driver.add_cookie({'name': key, 'value': cookies[key]})
driver.get('http://example.com')