2015-06-22 32 views
2

我試圖設置jenkins來運行我的量角器測試。 我知道我需要運行沒有瀏覽器的量角器。我如何設置它?Jenkins + WebDriver +量角器:引起者:org.openqa.selenium.remote.UnreachableBrowserException:無法啓動新會話

我需要安裝哪些npm軟件包? 我的實際包(在的package.json):

"devDependencies": { 
"karma": "~0.12", 
"karma-phantomjs-launcher": "~0.2", 
"karma-ng-html2js-preprocessor": "~0.1", 
"protractor": "~2.1.0", 
"bower": "~1.3.8", 
"jasmine": "~2.3.1", 
"karma-jasmine": "~0.3.5", 
"karma-requirejs": "~0.2.2" 

}

在我的本地機器一切正常,因爲我看到了Chrome瀏覽器窗口打開,我看到測試發生就可以了。

但是,當我嘗試在詹金斯運行它,我得到這個消息:

造成的:org.openqa.selenium.remote.UnreachableBrowserException:無法啓動新的會話。可能的原因是遠程服務器的地址無效或瀏覽器啓動失敗。
構建信息:版本:'2.45.0',修訂:'5017cb8',時間:'2015-02-26 23:59:50',ip:'127.0.1.1',os.name:'Linux' ,os.arch:'amd64',os.version:'3.13.0-24-generic',java.version:'1.8.0_25' 驅動程序信息:driver.version:ChromeDriver at org.openqa.selenium.remote .RemoteWebDriver.execute(RemoteWebDriver.java:593) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240) at org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:126) 在org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:139) 在org.openqa.selenium.chrome.ChromeDriver。(ChromeDriver.java:171) 在org.openqa.selenium.chrome.ChromeDriver。 (ChromeDriver.java:139) ... 14更多
原因:org.openqa.selenium.WebDriverException:等待驅動程序服務器啓動超時。
構建信息:版本:'2.45.0',修訂:'5017cb8',時間:'2015-02-26 23:59:50',ip:'127.0.1.1',os.name:'Linux' ,os.arch:'amd64',os.version:'3.13.0-24-generic',java.version:'1.8.0_25' 驅動程序信息:driver.version:ChromeDriver at org.openqa.selenium.remote .service.DriverService.start(DriverService.java:171) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver .java:572) ... 19更多
原因:org.openqa.selenium.net.UrlChecker $ TimeoutException:超時等待[http://localhost:4945/status]在20001 m後可用小號
在org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:104) 在org.openqa.selenium.remote.service.DriverService.start(DriverService.java:168) ... 21更

我protractor.conf.js:

exports.config = { 
// The address of a running selenium server. 
seleniumAddress: 'http://localhost:4444/wd/hub', 

// Capabilities to be passed to the webdriver instance. 
capabilities: { 
    'browserName': 'chrome', 
    'chromeOptions': { 
     'args': ['incognito', 'disable-extensions', 'start-maximized', 'enable-crash-reporter-for-testing', '--test-type'] 
    }, 
    'loggingPrefs': { 
     'browser': 'ALL' 
    } 
}, 

getPageTimeout: 20000, 

    framework: 'jasmine2', 

// Spec patterns are relative to the current working directly when 
// protractor is called. 

specs: ['global_setup.js', 'scenarios.js', 'campaign-grid-scenarios.js', 'create-campaign-scenarios.js'], 
baseUrl: 'http://localhost:18090', 

// Options to be passed to Jasmine-node. 
jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 30000 
} 

};

什麼導致此超時?這是因爲webdriver是鉻合金,但鉻不能在我的jenkins設置中打開? 我一直在尋找類似的問題,但我沒有找到任何相關的問題。

謝謝。

回答

1

這是因爲chrome沒有安裝在您的Jenkins設置中。根據你的情況,你有幾種選擇。

  1. 如果你有一個獨立的詹金斯實例,你知道,你不會有任何隨機選擇的節點,那麼你可以使用模擬瀏覽器實現像PhantomJS。您需要確保phantomjs安裝在您的Jenkins上,並告訴您的測試運行在phantomjs而不是chrome,如browserName : 'phantomjs'。你不需要在你的package.json中包含phantomjs。只要確保已安裝PhantomJS並將其可執行文件放置在PATH中的某處。

  2. 其次,您可以設置一個Selenium網格,並設置具有不同瀏覽器的節點來測試。從詹金斯,您可以在您選擇的瀏覽器上的遠程硒網格上運行測試。如果你想要走這條路線,有付費的第三方選擇,如醬汁實驗室或瀏覽器堆棧。

+0

我想在一個獨立的Jenkins實例上運行它,並且我知道像phantomjs這樣的無頭瀏覽器就是我正在尋找的。你能更加明確我需要做的配置來實現這個場景嗎?正如你所說,我應該告訴我的測試在phantomjs上運行。這意味着能力。 browserName:'phantomjs'? 但在此之前,我需要將'phantomjs'添加到我的'package.json'中,對嗎?還有什麼? 謝謝你的時間,@nilesh。 –

+0

對,只需告訴browserName:'phantomjs'並確保PhantomJS已安裝並位於Jenkins服務器的路徑中。無需向package.json添加任何內容。我更新了回答 – nilesh

+0

量角器官方文檔建議不要使用phantomjs [見](https://github.com/angular/protractor/blob/master/docs/browser-setup.md#setting-up-phantomjs)。你有什麼經驗@nilesh?我應該擔心嗎? –

相關問題