9

I'm using Selenium python binding to setup an automation test for our web application. I'm facing a problem while testing the web on beta server because it requires HTTP authentication for an intranet username and password.

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://somewebsite.com/")

I need to submit a username and a password for the popup dialog upon accessing http://somewebsite.com/

Is there a neat way to do this?

2 Answers 2

10

I have found a solution to this question:

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:[email protected]/")

The FirefoxProfile part is to dismiss the confirmation dialog because by default Firefox will show a popup dialog to prevent pishing.

Sign up to request clarification or add additional context in comments.

3 Comments

this solution worked for me too (I run last version of Firefox on Windows XP SP3, using Python and selenium).
It is still working for me using pyhon3.6, selenium==3.3.1 and selenium/standalone-firefox inside a docker container of docker hub version 3.4.0.
4

Another solution:

login with python requests, get the cookies, and push the cookies into the selenium's browser



    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')


1 Comment

This only copies cookies from the session across to the webdriver. While this may work in some cases (depending on how the backend is setup), this won't work in cases where the authorization header is required for all requests - not just the first.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.