1

我正在尝试使用 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 身份验证问题,这失败了。如果我将我的用户名和密码添加到 URL(即http://username:password@site.com),我可以在另一个不需要代理的站点上进行基本身份验证,但这似乎不是一个理想的解决方案。

有什么建议么?

4

4 回答 4

2

不幸的是,这样做http://username:password@site.com是标准的做法,但越来越多的浏览器阻止了这种做法。BrowserMob 的 Patrick Lightbody 在公司博客中讨论了他们如何让它发挥作用。

于 2009-12-22T20:57:10.117 回答
0

在 WebDriver(或 Selenium)的浏览器完全支持此功能之前,替代选项是集成 w/ 桌面 GUI 自动化工具,其中桌面 GUI 工具将自动化 HTTP 身份验证部分。如果您在谷歌上搜索“Selenium AutoIt”等内容,您可能会找到一些示例或文件下载、上传。

对于跨平台解决方案,将 AutoIt 替换为 Sikuli 或类似的东西。

于 2011-07-24T04:59:07.407 回答
0

我用 AutoIt 尝试了这种方法,它在 Selenium 2.18.0 之前运行良好,因为他们实现了 UnhandledAlertException,一旦代理登录对话框弹出,就会抛出该异常。如果你试图抓住它,你最终会得到一个驱动程序=null,你需要循环尝试创建一个驱动程序并信任你的 AutoIt 脚本来杀死窗口。

于 2012-02-03T21:54:37.700 回答
0

如果您正在使用Google-Chrome,请尝试创建自定义扩展并通过ChromeOptions. 它支持Chromehttp(s)中不支持的内容。browsermob_proxy在重定向测试的情况下,这是迄今为止唯一可以帮助您的方法...

有关详细信息,请查看此帖子 https://devopsqa.wordpress.com/2018/08/05/handle-basic-authentication-in-selenium-for-chrome-browser/

于 2018-08-05T10:29:20.560 回答