当phantomjs在与硒集线器不同的机器上运行时,连接被拒绝

时间:2014-03-10 16:52:47

标签: selenium selenium-webdriver phantomjs selenium-grid ghostdriver

是否可以在一台计算机上安装一个selenium hub,在另一台计算机上以与selenium节点相同的方式连接到该集线器的phantomjs实例?

如果我在同一台机器上启动了一个selenum hub和一个phantomjs实例,我可以成功运行测试。

如果我启动一个selenium hub并在另一台机器上启动一个selenium节点并使用firefox运行测试,则测试会成功执行。

如果我在另一台机器上启动selenium hub和phantomjs实例,phantomjs将成功连接到集线器,但在集线器尝试发送测试时拒绝连接。

连接到我发现的selenium hub的phantomjs实例的每个示例都会显示与集线器在同一台机器上运行的phantomjs实例。

基本环境信息###:

  • 两台机器都在运行debian jessie
  • 硒 - 服务器 - 独立-2.39.0.jar
  • phantomjs版本是1.9.7
  • 使用python和nose

SCENARIOS和STARTUP COMMANDS ###:

同一台计算机上的hub和phantomj 成功执行测试

java -jar selenium-server-standalone-2.39.0.jar -role hub -timeout=50 -browserTimeout=60 -ensureCleanSession
phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http://localhost:4444

不同计算机上的集线器和节点 使用firefox成功执行测试

java -jar selenium-server-standalone-2.39.0.jar -role hub -timeout=50 -browserTimeout=60 -ensureCleanSession
java -jar selenium-server-standalone-2.39.0.jar -role node -hub http://10.3.1.120:4444/grid/register -port 8080 -maxSessions=1

不同计算机上的集线器和幻像 无法执行测试

java -jar selenium-server-standalone-2.39.0.jar -role hub -timeout=50 -browserTimeout=60 -ensureCleanSession
phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http://10.3.1.120:4444
  • 服务器输出

    Mar 10, 2014 12:19:57 PM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive
    WARNING: Failed to check status of node: Connection refused
    
  • phantomjs输出

    PhantomJS is launching GhostDriver...
    [INFO  - 2014-03-10T16:15:46.149Z] GhostDriver - Main - running on port 8080
    [INFO  - 2014-03-10T16:15:46.150Z] GhostDriver - Main - registering to Selenium HUB 'http://10.3.1.120:4444' using '127.0.0.1:8080'
    [INFO  - 2014-03-10T16:15:46.198Z] HUB Register - register - Registered with grid hub: http://10.3.1.120:4444/ (ok)
    

1 个答案:

答案 0 :(得分:1)

添加webdriver参数的IP地址以及端口号。这应该有助于解决问题。前 -

phantomjs --webdriver-selenium-grid-hub=http://<Remote_IP_Of_Grid_Hub>:4444 --webdriver=<IP_Of_The_Local_Node>:9301

基本上,如果&#34; - webdriver&#34;中没有提到IP。 param,节点值作为localhost发送。然后,集线器在localhost端口9301上查找请求。由于端口9301未在集线器上打开,因此连接最终会丢失&amp;我们看到错误。