如何使用Selenium python绑定webdriver提交HTTP身份验证

时间:2011-08-11 07:10:28

标签: python selenium

我正在使用Selenium python绑定为我们的Web应用程序设置自动化测试。我在beta服务器上测试网络时遇到问题,因为它需要对内部网用户名和密码进行HTTP身份验证。

from selenium import webdriver

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

我需要在访问http://somewebsite.com/

时为弹出式对话框提交用户名和密码

有没有一种巧妙的方法可以做到这一点?

2 个答案:

答案 0 :(得分:9)

我找到了这个问题的解决方案:

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会显示一个弹出对话框以防止删除。

答案 1 :(得分:2)

另一种解决方案:

使用python请求登录,获取cookie,并将cookie推送到selenium的浏览器



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