Jenkins + WebDriver +量角器:引起:org.openqa.selenium.remote.UnreachableBrowserException:无法启动新会话

时间:2015-06-22 18:54:17

标签: selenium jenkins selenium-webdriver protractor

我试图设置jenkins来运行我的量角器测试。 我知道我需要在没有浏览器的情况下运行量角器。我该如何设置呢?

我需要安装哪些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"

}

在我的本地机器上一切正常,因为我看到镀铬窗口打开,我看到测试发生在它上面。

但是当我尝试在Jenkins上运行它时,我收到了这样的消息:

引起:org.openqa.selenium.remote.UnreachableBrowserException:无法启动新会话。可能的原因是远程服务器的无效地址或浏览器启动失败。
构建信息:版本:' 2.45.0',修订版:' 5017cb8',时间:' 2015-02-26 23:59:50',ip:& #39; 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     在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593)     在org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)     在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:& #39; 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     在org.openqa.selenium.remote.service.DriverService.start(DriverService.java:171)     在org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62)     在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572)     ... 19更多
引起:org.openqa.selenium.net.UrlChecker $ TimeoutException:等待[http://localhost:4945/status]在20001 ms之后可用时超时
    在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是chrome,但是在我的jenkins设置中无法打开chrome吗? 我一直在寻找类似的问题,但我没有发现任何相关的问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

那是因为您的Jenkins设置中没有安装chrome。根据您的具体情况,有几种选择。

  1. 如果你有一个独立的Jenkins实例并且你知道你没有任何随机选择的节点,那么你可以使用像PhantomJS这样的无头浏览器实现。您需要确保在Jenkins上安装phantomjs并告知您的测试在phantomjs上运行,而不是像chrome那样browserName : 'phantomjs'。您不需要在package.json中包含phantomjs。只需确保已安装PhantomJS并将其可执行文件放在PATH中的某个位置。

  2. 其次,您可以设置Selenium网格并使用您要测试的不同浏览器设置节点。从Jenkins您可以在您选择的浏览器上运行远程selenium网格上的测试。如果您希望走这条路线,可以使用酱油实验室或浏览器堆栈等付费的第三方选项。