如何通过外部代理服务器发送无头Selenium RC测试?

时间:2011-06-15 15:13:10

标签: proxy selenium

我需要在无头Ubuntu服务器上使用Selenium RC,使用外部代理服务器对网站进行测试,以模拟不同国家/地区的用户。

为了测试这个过程,我创建了一个非常简单的PHPUnit测试脚本,它基本上是这样做的:

$this->setBrowser("*firefox");
$this->setBrowserUrl("http://www.ipchicken.com/");
$this->open("/");
$this->assertTrue($this->isTextPresent(<proxy ip>));

我使用这些代理服务器指令启动我的Selenium 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发送“打开”请求,而不是通过代理服务器发送它。 / p>

selenium服务器可以访问代理服务器OK - 我用一个简单的PHP Curl脚本测试了它。如果我通过代理服务器使用Curl请求ipchicken.com,它会很好地返回代理服务器IP地址。

2 个答案:

答案 0 :(得分:0)

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

export http_proxy = http://username:password@host:port

更新:由于您使用的是firefox,因此您还需要在firefox中设置适当的代理设置。 (你在评论中提到的 hang 是firefox无法通过代理)。您需要使用

运行firefox profilemanager
firefox -ProfileManager

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

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

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

答案 1 :(得分:0)

我将简要解释使用Selenium Grid
1.首先在Linux上使用Xorg:96 -ac启动显示 2.现在导出DISPLAY = 96 3.启动firefox
4.使用硒网格启动Selenium端口 上述步骤应在Linux Server上完成
1.在Linux上启动selenium服务器之前,启动计算机上的 hub 2.现在执行脚本,它将转到linux上的活动端口。

由于

相关问题