selenium - 当 phantomjs 在与 selenium hub 不同的机器上运行时连接被拒绝

标签 selenium selenium-webdriver phantomjs selenium-grid ghostdriver

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

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

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

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

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

基本环境信息###:

  • 两台机器都运行 debian jessie
  • selenium-server-standalone-2.39.0.jar
  • phantomjs版本是1.9.7
  • 使用 python 和 nose

场景和启动命令###:

hub 和 phantomjs 在同一台机器上 成功执行测试

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

不同机器上的hub和phantomjs 无法执行测试

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)
    

最佳答案

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

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

基本上,如果“--webdriver”参数中未提及 IP,节点值将作为本地主机发送。然后集线器在本地主机端口 9301 上查找请求。由于端口 9301 在集线器上未打开,连接最终断开并且我们看到错误。

关于selenium - 当 phantomjs 在与 selenium hub 不同的机器上运行时连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306348/

相关文章:

javascript - phantomjs 总是在 Windows 上给出解析错误

javascript - 在 phantomjs 中的 qunit 测试期间在 iframe 中显示 JS 错误

connection - Phantomjs缓慢加载页面

python : Exception handling in Selenium

javascript - 我应该如何断言 Cypress 中的复选框已选中?

Selenium - 如何等待?

java - Selenium webdriver 显式等待

python - 按标签名称在元素内按标签名称查找元素(Selenium)

java - 如何在 Selenium WebDriver 中获取 native 记录器

java - 使用 Selenium 通过分页导航将项目添加到 HashMap