如何在Selenium Grid中将Selenium Hub设置为Selenium浏览器的代理服务器?

0 投票
1 回答
1396 浏览
提问于 2025-04-16 17:23

我在Ubuntu 10.04上使用Selenium 2.0b4dev和Selenium Grid,写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”,然后在hub上运行导入了selenium和unittest的Python程序。

如果有人能帮忙,那就太好了。

1 个回答

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,火狐浏览器会自动启用代理模式。否则,你需要使用 *firefoxproxy。IE浏览器则需要使用 *iexploreproxy 或者一个自定义的HTA启动器来配置代理(文章中链接了一个我们开源的,但需要更新才能与2.0 beta 4版本兼容)。

撰写回答