我需要在无头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地址。
答案 0 :(得分:0)
我遇到了同样的问题,试图让代理工作在Ubuntu系统上,并且无法让 -Dhttp.proxyHost 等...设置工作。我的解决方案是在 java 命令之前导出http_proxy - 就像你在使用DISPLAY一样。
export http_proxy = http://username:password@host:port
更新:由于您使用的是firefox,因此您还需要在firefox中设置适当的代理设置。 (你在评论中提到的 hang 是firefox无法通过代理)。您需要使用
运行firefox profilemanagerfirefox -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上的活动端口。
由于