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

9 投票
2 回答
21090 浏览
提问于 2025-04-16 23:22

我正在使用Selenium的Python库来为我们的网页应用设置自动化测试。在测试我们的测试服务器时,我遇到了一个问题,因为它需要输入内网的用户名和密码进行HTTP身份验证。

from selenium import webdriver

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

我需要在访问 http://somewebsite.com/ 时,提交一个用户名和一个密码给弹出的对话框。

有没有什么简单的方法可以做到这一点呢?

2 个回答

4

另一种解决方案:

用Python的requests库登录,获取cookies,然后把这些cookies放到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')


10

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

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会弹出一个对话框来防止网络钓鱼。

撰写回答