【问题标题】:How to set Selenium browsers to treat Selenium's hub as a proxy server in python on Selenium Grid?如何设置 Selenium 浏览器以将 Selenium 的集线器视为 Selenium Grid 上 python 中的代理服务器?
【发布时间】:2011-08-22 17:16:38
【问题描述】:

我在 Ubuntu 10.04 的 Selenium Grid 上运行 Selenium 2.0b4dev,使用 Python 代码编写测试用例。我一直无法获得对特定站点的基本 HTTP 身份验证,并且通过快速谷歌搜索发现我的问题可以通过添加 self.selenium.add_custom_request_header("Authorization", "Basic %s " % _encoded) (当然,中间有一个适当的换行符以符合 PEP 8。)

不幸的是,显然也是通过我的搜索,我发现为了让那行代码工作我需要配置我的浏览器(无论我使用哪个在网格上运行测试用例)来处理 Selenium(自动运行,显然?)代理服务器作为该浏览器使用的代理。但显然我需要修改 Firefox(或 IE)启动器的配置文件以自动使用该代理,因为这些 Selenium Grid 测试用例的全部意义在于它们不应该需要用户干预,而且我几乎没有不知道该怎么做。我一直在使用“ant launch-hub”和“ant launch-remote-control”,然后在集线器上运行导入 selenium 和 unittest 的 python 程序。

如果有人可以提供帮助,那就太好了。

【问题讨论】:

    标签: python proxy selenium selenium-grid


    【解决方案1】:

    我写了一篇关于如何在 Ruby 中做到这一点的文章。它链接到一篇关于测试自签名证书的补充文章,并为您提供了启动 Selenium 所需的一组标志。

    http://mogotest.com/blog/2010/06/23/how-to-perform-basic-auth-in-selenium

    要将参数从网格传递到底层 RC 服务器,您需要使用以下内容:

    ant -DseleniumArgs="-trustAllSSLCertificates" launch-remote-control

    回复:浏览器。 . .如果你现在通过trustAllSSLCertificates,firefox 将自动启用代理模式的东西。否则你需要使用 *firefoxproxy。 IE 需要使用 *iexploreproxy 或配置代理的自定义 HTA 启动器(本文链接到我们开源的一个,但需要更新以与 2.0 beta 4 一起使用)。

    【讨论】:

    • “Firefox 将自动启用代理模式”,你的意思是我必须像在“如何接受 Selenium 中的自签名 SSL 证书”页面中那样修补 Firefox 启动器然后通过 -DseleniumArgs?或者我可以只传递那个标志并让它工作而不用在最新版本的 Selenium Grid 中打补丁?我尝试在我的遥控器中传递那个标志,但它仍然没有工作,自从找到你的这两篇文章以来,我一直在寻找我应该修补的地方和内容,以使 Firefox 确认代理。 (也许我需要将 -avoidproxy 添加到集线器?)
    • 哦,除了感谢您的回复之外,我还应该问一下您是在 Grid 上使用 Selenium 1.X 还是 2.X。我读到一些内容说您的聪明解决方案在 2.X 中不再适用,但原因对我来说没有意义。
    • 我需要在该帖子中添加注释。由于它是编写的,我将该补丁应用到主干中的 *firefox 启动器。它是在 2.0a5 左右添加的。如果您想在 HTA 模式下使用 IE,仍然需要自定义启动器。
    • 这篇文章是为 Selenium 1.x API 编写的,它仍然存在于 2.x 发行版中。在 WebDriver API 中配置代理完全不同。如果您使用的是 grid 1.x,那么您使用的是 Selenium 1.x API,所以这篇文章仍然是准确的。
    • 我在遥控器上使用 Grid 1.0.8 和 -DseleniumArgs="-trustAllSSLCertificates" 标志,但仍然没有运气。不过,感谢您的帮助。我还尝试了将“-avoidProxy”传递到集线器的所有四种组合,方法是在我运行启动集线器时将其添加到 -DseleniumArgs 中(或不传递“-avoidProxy”),并将 Selenium 启动指向集线器 self.selenium = selenium("localhost", 4444, "*firefox", "localhost:4444") 然后在我需要验证的站点上使用 open (或者直接将其打开到目标。)所有四种组合都需要用户输入密码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2015-02-21
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多