如何使用Selenium Python绑定的webdriver提交HTTP身份验证
我正在使用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会弹出一个对话框来防止网络钓鱼。