2011-06-15 54 views
2

我需要在无头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地址就好了。

回答

0

我遇到了同样的问题,试图让代理在Ubuntu系统上工作,并且无法让-Dhttp.proxyHost etc ...设置正常工作。我的解决方案是在java命令之前导出http_proxy - 就像您在使用DISPLAY一样。

export http_proxy = http://username:[email protected]:port 

更新:由于使用的是Firefox,你还需要在Firefox设置适当的代理设置。 (挂起你在你的评论中提到的是firefox无法通过代理)。你需要运行firefox profilemanager与

firefox -ProfileManager 

然后创建一个新的配置文件。为配置文件的路径创建一个新目录,因为它会在该位置放置大量文件。在该配置文件内创建适当的代理设置。您现在可以使用firefoxProfileTemplate选项与硒RC:

java -jar ..... -firefoxProfileTemplate /path/to/your/new/profile 

注意,您只需要运行一次配置文件管理器,然后这样你就可以运行无头。

+0

感谢 - 这是一个很好的想法,但是这将导致RC服务器可以在“启动Firefox”阶段挂起。如果我尝试“导出http_proxy =主机:端口”(即没有http://前缀),RC服务器工作正常,但仍然不使用代理。 – 2011-06-16 12:03:21

+0

有关使用Firefox修补程序添加到修复程序的信息。 – borrible 2011-06-16 12:35:06

+1

完美 - 谢谢!作为其他人为此付出的一个侧面提示,我最初使用的是Selenium v​​2.0b2,它没有以真正的用户配置文件启动Firefox。升级到Selenium v​​2.0rc3为我解决了这个问题,但我认为它实际上是在v2.0b3中修复的。 – 2011-06-29 11:55:30

0

我将短解释在使用硒网格
1.首先开始使用Xorg显示:96 -ac在Linux
2.现在导出DISPLAY = 96。
3.启动firefox
4.使用硒网格启动Selenium端口。
上述步骤应该在Linux服务器上完成。

1.在linux上启动selenium服务器之前,在您的机器上启动集线器
2.现在执行该脚本,它将转到linux上的活动端口。

感谢