我试图设置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吗? 我一直在寻找类似的问题,但我没有发现任何相关的问题。
谢谢。
答案 0 :(得分:1)
那是因为您的Jenkins设置中没有安装chrome。根据您的具体情况,有几种选择。
如果你有一个独立的Jenkins实例并且你知道你没有任何随机选择的节点,那么你可以使用像PhantomJS这样的无头浏览器实现。您需要确保在Jenkins上安装phantomjs
并告知您的测试在phantomjs
上运行,而不是像chrome
那样browserName : 'phantomjs'
。您不需要在package.json中包含phantomjs。只需确保已安装PhantomJS并将其可执行文件放在PATH中的某个位置。
其次,您可以设置Selenium网格并使用您要测试的不同浏览器设置节点。从Jenkins您可以在您选择的浏览器上运行远程selenium网格上的测试。如果您希望走这条路线,可以使用酱油实验室或浏览器堆栈等付费的第三方选项。