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

问题描述

| 我需要在无头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发送“打开”请求,而不是通过代理服务器发送该请求。 硒服务器可以访问代理服务器。OK-我已经用简单的PHP Curl脚本对此进行了测试。如果我通过代理服务器使用Curl请求ipchicken.com,它将返回代理服务器IP地址。     

解决方法

        我在尝试使代理在Ubuntu系统上工作时遇到了相同的问题,但无法使-Dhttp.proxyHost等...设置生效。我的解决方案是在java命令之前导出http_proxy-就像您在使用DISPLAY一样。
export http_proxy = http://username:password@host:port
更新:由于您使用的是Firefox,因此您还需要在Firefox中设置适当的代理设置。 (您在评论中提到的挂起是Firefox无法通过代理)。您需要使用以下命令运行firefox profilemanager
firefox -ProfileManager
然后创建一个新的配置文件。为配置文件的路径创建一个新目录,因为它将在该位置放置大量文件。在该配置文件中,创建适当的代理设置。现在,您可以将firefoxProfileTemplate选项与硒rc一起使用:
 java -jar ..... -firefoxProfileTemplate /path/to/your/new/profile
请注意,您只需要运行一次配置文件管理器,因此此后您将可以无头运行。     ,        我将简要说明使用Selenium Grid 1.首先在Linux上使用Xorg:96 -ac开始显示 2.现在导出DISPLAY = 96。 3.启动Firefox 4.使用硒网格启动硒端口。 以上步骤应在Linux Server上完成。 1.在Linux上启动Selenium服务器之前,请在计算机上启动集线器。 2.现在执行脚本,它将转到linux上的活动端口。 谢谢