2013-04-18 111 views
4

我有硒網格上AmazonEC2運行運行硒網格WebdriverJS測試

它包括在端口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) 

我的問題是: 不硒WebdriverJS支持連接到集線器?如果是這樣我做錯了什麼?

注:

  • 我已經連接到輪轂併成功運行的相同步驟一個RSpec測試。
  • 我也能夠在EC2實例上本地連接集線器並運行測試,只有在嘗試遠程連接到電網時纔會發生。
  • 當在Selenium2網格控制檯上查看:7055/grid/console時,它似乎在節點上使用會話。

命令我在EC2上用於啓動電網:

Xvfb :0 -screen 0 1024x768x24 2>&1 >/dev/null & 
export DISPLAY=:0 
java -jar selenium-server-standalone-2.32.0.jar -port 7055 -role hub 
xvfb-run java -jar selenium-server-standalone-2.32.0.jar -role node -hub http://localhost:7055/grid/register 
+0

也許,使用webdriver的JS時,您可能需要運行特定版本的網格中心?在他們的網站上,它看起來像2.32.0可以工作,但也許你應該嘗試2.29或其他版本,看看錯誤是否改變? – djangofan

+0

您如何確定您已將端口從您的硒中樞打開到您的EC2實例?如果是我,我只能運行EC2實例上的網格節點,然後在自己的計算機上運行集線器。 – djangofan

+0

命令'curl http://ec2-50-18-75-182.us-west-1.compute.amazonaws.com:7055/wd/hub'的結果是什麼? – shawnzhu

回答