Как отправить 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')