【发布时间】:2016-01-27 09:51:43
【问题描述】:
我在 Windows Server 上配置了一个 Jenkins,用于夜间构建、编译等。以及 UI 测试(E2E 测试)自动化,但我遇到了一些问题。 我们有一个在 Chrome 上运行的 Web 应用程序,需要 Jenkins 使用量角器(使用 Selenium)运行这些测试。
从 Windows cmd 控制台手动运行,测试成功完成。
-------这里是控制台输出;
***C:\Jenkins\jobs\UI Automation\workspace> protractor e2e-tests/protractor.conf.js
Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver
WARNING - more than one element found for locator by.repeater("attachment in pos
t_item.attachments") - the first result will be used
.
Finished in 68.394 seconds
1 test, 8 assertions, 0 failures
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #1 passed***
-----这是 Jenkins 运行的输出;
C:\Jenkins\jobs\UI Automation\workspace>protractor e2e-tests/protractor.conf.js
Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver
WARNING - more than one element found for locator by.repeater("attachment in post_item.attachments") - the first result will be used
[31mF[0m
Failures:
1) new_message_with_attachment should send new message with attachment
Message:
[31mElementNotVisibleError: element not visible
(Session info: chrome=47.0.2526.111)
(Driver info: chromedriver=2.13.307647 (5a7d0541ebc58e69994a6fb2ed930f45261f3c29),platform=Windows NT 6.0 SP2 x86_64)[0m
Stacktrace:
ElementNotVisibleError: element not visible
(Session info: chrome=47.0.2526.111)
(Driver info: chromedriver=2.13.307647 (5a7d0541ebc58e69994a6fb2ed930f45261f3c29),platform=Windows NT 6.0 SP2 x86_64)
at new bot.Error (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:113:18)
at Object.bot.response.checkResponse (C:\Users\x\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:9)
at C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:362:20
at C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1582:15
at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
at notify (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:465:12)
at notifyAll (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:442:7)
at resolve (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:420:7)
at [object Object].fulfill (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:535:5)
at C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1520:10
==== async task ====
WebElement.click()
at [object Object].webdriver.WebDriver.schedule (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:345:15)
at [object Object].webdriver.WebElement.schedule_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:1727:23)
at [object Object].webdriver.WebElement.click (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:1832:15)
at actionFn (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\lib\element.js:75:32)
at C:\Users\X\AppData\Roaming\npm\node_modules\protractor\lib\element.js:393:17
at Array.forEach (native)
at actionResults.getWebElements.then.then.e.stack (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\lib\element.js:392:9)
at C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1582:15
at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
==== async task ====
Asynchronous test function: it()
at [object Object].<anonymous> (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd\index.js:93:33)
at [object Object].<anonymous> (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37)
at [object Object].jasmine.Block.execute (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:17)
at [object Object].jasmine.Queue.next_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
at [object Object]._onTimeout (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2199:18)
Error
at [object Object].ElementArrayFinder.applyAction_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\lib\element.js:389:21)
at [object Object].self.(anonymous function) [as click] (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\lib\element.js:77:19)
at [object Object].self.(anonymous function) [as click] (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\lib\element.js:697:11)
at [object Object].<anonymous> (C:\Jenkins\jobs\UI Automation\workspace\e2e-tests\new_message_with_attachment.js:223:62)
at C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd\index.js:94:14
at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
at [object Object].webdriver.promise.ControlFlow.runEventLoop_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1518:8)
Error
at [object Object].<anonymous> (C:\Jenkins\jobs\UI Automation\workspace\e2e-tests\new_message_with_attachment.js:76:3)
at [object Object].jasmine.Env.describe_ (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21)
at [object Object].jasmine.Env.describe (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
at describe (C:\Users\X\AppData\Roaming\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
at Object.<anonymous> (C:\Jenkins\jobs\UI Automation\workspace\e2e-tests\new_message_with_attachment.js:75:1)
Finished in 59.756 seconds
[31m1 test, 8 assertions, 2 failures
[0m
[launcher] 0 instance(s) of WebDriver still running
Build step 'Execute Windows batch command' marked build as failure
Discard old builds...
Sending e-mails to: me@home.com
Finished: FAILURE*
-------这里是protractor.conf.js;
*exports.config = {
allScriptsTimeout: 20000,
specs: [
'new_message_with_attachment.js',
],
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
prefs: {'profile.managed_default_content_settings.notifications': 1}},
shardTestFiles: true,
maxSessions: 1
},
directConnect: true,
jasmineNodeOpts: {
defaultTimeoutInterval: 1000000
}
};*
有没有cmets?
【问题讨论】:
-
您的 Jenkins 是否有某种显示输出,或者您是否使用 xvfb 进行虚拟显示?
-
我找不到任何显示输出,它可以用来跟踪找不到哪个元素。此外,日志中的错误会不时更改,例如我收到一些错误,例如“未知错误:元素不可点击”或“使用定位器找不到元素:By.cssSelector(”[class=\"btn btn-info btn-newpost\"]")" 或“索引超出范围。尝试访问索引处的元素:0,但只有 0 个元素”。我认为量角器运行的背景存在一些问题,可能是在硒方面..
-
@eozen 我曾经将量角器与 Jenkins 集成。不记得失败的所有细节,但它非常不稳定。我会建议你尝试使用 xvfb。如果 Jenkins 是一个虚拟机,那么机器的资源也会产生巨大的影响。确保它有 2-4GB RAM 和至少 2-4 个处理器,每个处理器至少应该有 2.0Ghz,图形 VRAM 至少应该是 128MB(可用 VRAM 不是配置 VRAM)。
-
@LinhPham 感谢您的反馈。正如你所说,它现在不稳定,每次运行我都会遇到不同的错误。我使用的是 Windows Server,所以我不能使用 xvfb,或者?我认为 Windows 服务器配置还可以,我有 8GB ram 2.4Ghz 处理器,应该足够了。但是测试运行速度非常快,出现“未找到元素”之类的错误很可能是因为未完成网页安装..有时甚至可以输入登录用户名而缺少一些字符。
-
@eozen,在您的最新评论中获得了一些有用的信息,我会尽快尝试回答:) ---- P.S.顺便问一下,你那里有多少个处理器?只有一个?
标签: jenkins protractor