8
votes

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

2 Answers

9
votes

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.

4
votes

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