我需要在无头Ubuntu服务器上使用Selenium RC,以使用外部代理服务器来模拟不同国家的用户对网站运行测试。如何通过外部代理服务器发送无头Selenium RC测试?
要测试的过程中,我创建了一个非常简单的PHPUnit的测试脚本,其基本作用:
$this->setBrowser("*firefox");
$this->setBrowserUrl("http://www.ipchicken.com/");
$this->open("/");
$this->assertTrue($this->isTextPresent(<proxy ip>));
我使用这些代理服务器指令(有代理上的无身份验证)开始了我的硒RC:
export DISPLAY=":99" && java -Dhttp.proxyHost=<proxy ip> -Dhttp.proxyPort=<proxy port> -jar /var/lib/selenium/selenium-server.jar -avoidProxy
但我的测试脚本失败了断言。如果我更改测试以断言我的Selenium服务器IP地址,断言将通过,这使我们看起来像Selenium直接向ipchicken.com发送“open”请求,而不是通过代理服务器发送它。
硒服务器可以访问代理服务器好吧 - 我已经用一个简单的PHP Curl脚本测试过了。如果我通过代理服务器使用Curl请求ipchicken.com,它将返回代理服务器IP地址就好了。
感谢 - 这是一个很好的想法,但是这将导致RC服务器可以在“启动Firefox”阶段挂起。如果我尝试“导出http_proxy =主机:端口”(即没有http://前缀),RC服务器工作正常,但仍然不使用代理。 – 2011-06-16 12:03:21
有关使用Firefox修补程序添加到修复程序的信息。 – borrible 2011-06-16 12:35:06
完美 - 谢谢!作为其他人为此付出的一个侧面提示,我最初使用的是Selenium v2.0b2,它没有以真正的用户配置文件启动Firefox。升级到Selenium v2.0rc3为我解决了这个问题,但我认为它实际上是在v2.0b3中修复的。 – 2011-06-29 11:55:30