Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Proxy 如何通过外部代理服务器发送headless Selenium RC测试?_Proxy_Selenium - Fatal编程技术网

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

Proxy 如何通过外部代理服务器发送headless Selenium RC测试?,proxy,selenium,Proxy,Selenium,我需要在一个无头Ubuntu服务器上使用Selenium RC对一个使用外部代理服务器的网站运行测试,以模拟不同国家的用户 为了测试这个过程,我创建了一个非常简单的PHPUnit测试脚本,它基本上可以: $this->setBrowser("*firefox"); $this->setBrowserUrl("http://www.ipchicken.com/"); $this->open("/"); $this->assertTrue($this->isTextPr

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

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

$this->setBrowser("*firefox");
$this->setBrowserUrl("http://www.ipchicken.com/");
$this->open("/");
$this->assertTrue($this->isTextPresent(<proxy ip>));
$this->setBrowser(“*firefox”);
$this->setBrowserUrl(“http://www.ipchicken.com/");
$this->open(“/”);
$this->assertTrue($this->isTextPresent());
我使用以下代理服务器指令启动Selenium RC(代理上没有身份验证):

export DISPLAY=“:99”&&java-Dhttp.proxyHost=-Dhttp.proxyPort=-jar/var/lib/selenium/selenium-server.jar-avoidProxy
但是我的测试脚本没有通过断言。如果我将测试更改为断言我的Selenium服务器IP地址,断言就会通过,这使我觉得Selenium将“打开”请求直接发送到ipchicken.com,而不是通过代理服务器发送


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

我在尝试让代理在Ubuntu系统上工作时遇到同样的问题,但无法获得-Dhttp.proxyHost等。。。设置工作。我的解决方案是在java命令之前导出http_代理,就像您对显示器所做的那样

export http_proxy = http://username:password@host:port
更新:因为您使用的是firefox,所以还需要在firefox中设置适当的代理设置。(你在评论中提到的问题是firefox未能通过代理)。您需要使用运行firefox profilemanager

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

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

请注意,您只需要运行一次配置文件管理器,因此此后您就可以运行headless了。

我在尝试让代理在Ubuntu系统上运行时遇到了同样的问题,但无法获得-Dhttp.proxyHost等。。。设置工作。我的解决方案是在java命令之前导出http_代理,就像您对显示器所做的那样

export http_proxy = http://username:password@host:port
更新:因为您使用的是firefox,所以还需要在firefox中设置适当的代理设置。(你在评论中提到的问题是firefox未能通过代理)。您需要使用运行firefox profilemanager

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

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

请注意,您只需要运行一次概要文件管理器,因此此后您就可以运行headless了。

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

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


谢谢

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

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


谢谢

谢谢-这是个好主意,但这会导致RC服务器挂起在“启动Firefox”阶段。如果我尝试“export http_proxy=host:port”(即不带http://前缀),RC服务器工作正常,但仍然不使用代理。非常好-谢谢!作为对其他与此抗争的人的补充,我最初使用的是Selenium v2.0b2,它无法使用真实的用户配置文件启动Firefox。升级到Selenium v2.0rc3为我修复了这个问题,尽管我认为它实际上在v2.0b3中已经修复。谢谢-这是一个好主意,但这会导致RC服务器挂起在“启动Firefox”阶段。如果我尝试“export http_proxy=host:port”(即不带http://前缀),RC服务器工作正常,但仍然不使用代理。非常好-谢谢!作为对其他与此抗争的人的补充,我最初使用的是Selenium v2.0b2,它无法使用真实的用户配置文件启动Firefox。升级到Selenium v2.0rc3为我修复了这个问题,尽管我认为它实际上在v2.0b3中已经修复。