Node.js 在Selenium网格上运行WebdriverJS测试

Node.js 在Selenium网格上运行WebdriverJS测试,node.js,selenium-webdriver,selenium-grid,Node.js,Selenium Webdriver,Selenium Grid,我有一个在AmazonEC2上运行的Selenium网格 它由一个运行在端口7055上的集线器和一个运行在端口7056上的节点组成 我有以下测试: var webdriver = require('selenium-webdriver'), driver = new webdriver.Builder(). usingServer('http://ec2-50-18-75-182.us-west-1.compute.amazonaws.com:7055/wd/hub').

我有一个在AmazonEC2上运行的Selenium网格

它由一个运行在端口7055上的集线器和一个运行在端口7056上的节点组成

我有以下测试:

var webdriver = require('selenium-webdriver'),
    driver = new webdriver.Builder().
       usingServer('http://ec2-50-18-75-182.us-west-1.compute.amazonaws.com:7055/wd/hub').
       withCapabilities({'browserName': 'firefox'}).
       build();


var postTitle = "Post "+(+new Date);

driver.get('http://si-demo.herokuapp.com/posts/new');
driver.findElement(webdriver.By.id('post_name')).sendKeys("Selenium");
driver.findElement(webdriver.By.id('post_title')).sendKeys(postTitle);
driver.findElement(webdriver.By.id('post_content')).sendKeys("This is auto generated by a test");
driver.findElement(webdriver.By.name('commit')).click();
driver.quit();
当我尝试连接到集线器端口时失败。 当我直接连接到节点端口时,测试会运行

连接到电网集线器时出现的错误是:

timers.js:103
            if (!process.listeners('uncaughtException').length) throw e;
                                                                      ^
Error: ETIMEDOUT connect ETIMEDOUT
    at ClientRequest.sendRequest (/Users/jason/Development/cirrus/spanish-inquisition-runner/node_modules/selenium-webdriver/http/index.js:127:16)
    at ClientRequest.EventEmitter.emit (events.js:96:17)
    at Socket.socketErrorListener (http.js:1436:9)
    at Socket.EventEmitter.emit (events.js:96:17)
    at Socket._destroy.self.errorEmitted (net.js:329:14)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
==== async task ====
WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (/Users/jason/Development/cirrus/spanish-inquisition-runner/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:130:49)
    at Function.webdriver.WebDriver.createSession (/Users/jason/Development/cirrus/spanish-inquisition-runner/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:109:30)
    at Builder.build (/Users/jason/Development/cirrus/spanish-inquisition-runner/node_modules/selenium-webdriver/builder.js:70:22)
    at Object.<anonymous> (/Users/jason/Development/cirrus/spanish-inquisition-runner/open_canvas.js:5:8)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

你试过使用远程webdriver吗? 我没有使用JS驱动程序,但C#有一个用于远程网格连接的特定驱动程序

查看JS文档,在构建驱动程序时,您可能需要执行以下操作:

var webdriver = require('selenium-webdriver'), 
    SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;

也许,在使用WebDriver JS时,您可能需要运行特定版本的Grid Hub?从他们的网站上看,2.32.0似乎可以工作,但也许您应该尝试2.29或其他版本,看看错误是否发生了变化?您是否确定已打开从selenium集线器到EC2实例的端口?如果是我,我将只在EC2实例上运行网格节点,然后在自己的计算机上运行集线器http://ec2-50-18-75-182.us-west-1.compute.amazonaws.com:7055/wd/hub?能否在浏览器中远程检查此url?它应该显示网格上所有可用的节点
http://ec2-50-18-75-182.us-west-1.compute.amazonaws.com:7055/grid/console
var webdriver = require('selenium-webdriver'), 
    SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;