我正在使用Selenium python绑定为我们的Web应用程序设置自动化测试。我在beta服务器上测试网络时遇到问题,因为它需要对内部网用户名和密码进行HTTP身份验证。
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://somewebsite.com/")
我需要在访问http://somewebsite.com/
时为弹出式对话框提交用户名和密码有没有一种巧妙的方法可以做到这一点?
答案 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')