我正在尝试使用selenium-webdriver [ruby bindings] [1]来访问需要配置代理的内部网站,以及HTTP Basic Auth。
我目前有:
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://my-internal-site.com"
但由于代理和http auth问题导致此操作失败。如果我将我的用户名和密码添加到URL(即http://username:password@site.com
),我可以在另一个不需要代理的网站上进行基本身份验证,但这似乎不是一个理想的解决方案。
有什么建议吗?
答案 0 :(得分:1)
不幸的是,http://username:password@site.com
一直是标准的做法,但越来越多的浏览器阻止了这种做法。 BrowserMob的Patrick Lightbody在公司blog中讨论了如何让它发挥作用。
答案 1 :(得分:0)
在WebDriver(或Selenium)的浏览器上完全支持此功能之前,备用选项是集成w /桌面GUI自动化工具,桌面GUI工具将自动化HTTP身份验证部分。你可以找到这个或文件下载的一些例子,如果你谷歌搜索“Selenium AutoIt”等内容上传。
对于跨平台解决方案,将AutoIt替换为Sikuli或类似的东西。
答案 2 :(得分:0)
我尝试使用AutoIt的方法,它工作正常,直到Selenium 2.18.0, 因为他们实现了UnhandledAlertException,它将很快被抛出 弹出代理登录对话框。 如果你试图捕获它,你最终得到一个driver = null,你需要循环 尝试创建驱动程序并信任您的AutoIt脚本以杀死窗口。
答案 3 :(得分:0)
如果您使用的是Google-Chrome
,请尝试创建自定义扩展名并通过ChromeOptions
导入。它支持http(s)
在Chrome中不受browsermob_proxy
支持。在进行重定向测试的情况下,这是目前唯一可以帮助您的方法...
有关详细信息,请查看此帖子 https://devopsqa.wordpress.com/2018/08/05/handle-basic-authentication-in-selenium-for-chrome-browser/