2014-04-16 23 views
1

我一直在尋找方法來創建一個合理的結構,以便在Node.js中使用BrowserStack專門進行可伸縮測試。BrowserStack - Node.js併發測試

請查看這裏的源:

https://gist.github.com/Palgie/10886008 

我得到試圖關閉會話或退出驅動程序,以便運行並行測試時,它會經常告訴我,我的最大會話使用(當一個問題見下文)。

這感覺就像是一種競爭條件,但它可能是一件非常明顯的事情。

Now testing Chrome - 22.0 
    Now testing IE - 10.0 
    ․․․․ 
    Stopping test 
    Stopping test 
    ․ 

    4 passing (14s) 
    1 failing 

    1) "after all" hook: 
     Error: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used. 
     at checkHasNotQuit (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:291:13) 
     at webdriver.WebDriver.schedule (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:263:3) 
     at webdriver.WebDriver.quit (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:331:21) 
     at Context.<anonymous> (/Users/gourleyp/Sites/bs-webdriver/driver.js:35:14) 
     at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20) 
     at webdriver.promise.ControlFlow.runEventLoop_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1463:8) 
     at wrapper [as _onTimeout] (timers.js:252:14) 
     at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 
    ==== async task ==== 
     at Context.<anonymous> (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/testing/index.js:126:14) 
     at Hook.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:196:15) 
     at next (/usr/local/lib/node_modules/mocha/lib/runner.js:259:10) 
     at /usr/local/lib/node_modules/mocha/lib/runner.js:271:7 
     at done (/usr/local/lib/node_modules/mocha/lib/runnable.js:185:5) 
     at /usr/local/lib/node_modules/mocha/lib/runnable.js:199:9 
     at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/testing/index.js:92:5 
     at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/goog/base.js:1178:15 
     at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20) 
     at notify (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:428:12) 
     at notifyAll (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:397:7) 
     at resolve (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:375:7) 
     at fulfill (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:493:5) 
     at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1465:10 
     at Object.webdriver.promise.asap (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:732:5) 
     at newFrame.then.e (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1614:25) 
     at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/goog/base.js:1178:15 
     at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20) 
     at notify (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:428:12) 
     at notifyAll (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:397:7) 
     at resolve (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:375:7) 
     at fulfill (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:493:5) 
     at webdriver.promise.ControlFlow.resolveFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1519:9) 
     at webdriver.promise.ControlFlow.getNextTask_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1488:12) 
     at webdriver.promise.ControlFlow.runEventLoop_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1446:59) 
     at wrapper [as _onTimeout] (timers.js:252:14) 
     at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 

在來源我參考,據我瞭解,它應該執行會議,但它不覺得喜歡它。

test.after(function() { 
    console.log('Stopping test'); 
    driver.quit(); 
}); 

據我瞭解它在瀏覽器中運行的所有摩卡測試或測試的webdriver後那麼它會終止驅動程序和方法之前,它會接着初始化一個新的實例。

任何幫助,將不勝感激!

乾杯

回答

3

您可以使用selenium-runner並行運行測試。使用Selenium Runner在BrowserStack上並行運行測試的示例在以下文檔中給出:https://www.browserstack.com/automate/node

而且如果硒亞軍不能滿足你的需要,你可以請分享你的需求(具體框架或庫代碼ü要並行運行它),這樣我們就可以欣賞到問題

阿克沙伊@ BrowserStack