angularjs - Jenkins chromedriver Protractor 问题

标签 angularjs testing jenkins protractor selenium-chromedriver

我目前在一个 angularjs 项目中工作,我使用 Protractor 构建测试。我想用 Jenkins 自动化我的测试。我写了一个小的 shell 脚本来启动我的测试,它在我的终端上运行良好。但是当我尝试从 Jenkins 启动脚本时遇到问题。在 Jenkins 控制台中,我可以看到此错误消息:

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/test
[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Done
[test] $ /bin/sh -xe /tmp/hudson2254278298273314957.sh
+ sh /home/test/Desktop/jenkins.sh
[4mRunning "connect:server" (connect) task[24m
[4mRunning "protractor:chrome" (protractor) task[24m
Waiting forever...
Started connect web server on http://localhost:3001
Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver

等待... 10 秒

/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:108
      var template = new Error(this.message);
                     ^
    UnknownError: unknown error: Chrome failed to start: exited abnormally
      (Driver info: chromedriver=2.23.409687 (c46e862757edc04c06b1bd88724d15a5807b84d1),platform=Linux 4.4.0-21-generic x86_64)
        at new bot.Error (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:108:18)
        at Object.bot.response.checkResponse (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/response.js:109:9)
        at /home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:160:24
        at [object Object].promise.ControlFlow.runInFrame_ (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20)
        at [object Object].goog.defineClass.notify (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25)
        at [object Object].promise.Promise.notify_ (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12)
        at Array.forEach (native)
        at [object Object].promise.Promise.notifyAll_ (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:553:15)
        at goog.async.run.processWorkQueue (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/async/run.js:130:15)
        at process._tickCallback (node.js:368:9)
    From: Task: WebDriver.createSession()
        at Function.webdriver.WebDriver.acquireSession_ (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:157:22)
        at Function.webdriver.WebDriver.createSession (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:131:30)
        at new Driver (/home/test/workspace/frontend/node_modules/protractor/node_modules/selenium-webdriver/chrome.js:810:36)
        at [object Object].DirectDriverProvider.getNewDriver (/home/test/workspace/frontend/node_modules/protractor/lib/driverProviders/direct.js:68:16)
        at [object Object].Runner.createBrowser (/home/test/workspace/frontend/node_modules/protractor/lib/runner.js:182:37)
        at /home/test/workspace/frontend/node_modules/protractor/lib/runner.js:263:21
        at _fulfilled (/home/test/workspace/frontend/node_modules/protractor/node_modules/q/q.js:797:54)
        at self.promiseDispatch.done (/home/test/workspace/frontend/node_modules/protractor/node_modules/q/q.js:826:30)
        at Promise.promise.promiseDispatch (/home/test/workspace/frontend/node_modules/protractor/node_modules/q/q.js:759:13)
        at /home/test/workspace/frontend/node_modules/protractor/node_modules/q/q.js:525:49
        at flush (/home/test/workspace/frontend/node_modules/protractor/node_modules/q/q.js:108:17)
        at nextTickCallbackWith0Args (node.js:419:9)
        at process._tickCallback (node.js:348:13)
        at Function.Module.runMain (module.js:444:11)
        at startup (node.js:136:18)
        at node.js:966:3
    [launcher] Process exited with error code 1
    [31m>> [39m
    [33mWarning: Tests failed, protractor exited with code: 1 [4mUsed --force, continuing.[24m[39m

    [31mDone, but with warnings.[39m
    Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
    Finished: SUCCESS

我因为这个问题完全被屏蔽了。你有解决这个问题的线索吗? 谢谢大家!

最佳答案

根据该错误,您的配置中似乎有 directConnect: true。 Jenkins 无法直接连接到浏览器驱动程序,因此删除该行。

而且你正在使用 localhost,不要认为 Jenkins 也可以使用它。您可能需要一个远程 selenium 服务器。

这是一篇关于在 Windows VM 上运行 Protractor 的很棒的博客文章(它专注于在 Internet Explorer 上运行,但提供了很多关于整个过程的有用信息)http://elgalu.github.io/2014/run-protractor-against-internet-explorer-vm/

关于angularjs - Jenkins chromedriver Protractor 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234849/

相关文章:

javascript - 根据权限级别显示/隐藏零件的最佳方法 - Angular JS

JavaScript - 使用 Mocha 测试时出现 "res.json is not a function"错误

c# - 发生异常 "System.InvalidProgramException: JIT Compiler encountered an internal limitation "

docker - Jenkins和Kubernetes在同一虚拟机中

jenkins - 在 Jenkins 中,有没有办法保留 npm 包,这样我就不必在每个构建中安装它们?

javascript - 与 Angular 同步事件(如线程 'join()' 函数)

javascript - 使用 multer 和 angularjs 从文本框中添加名称和原始文件名创建新名称时上传两次

javascript - Angular 数据绑定(bind) - 与 JavaScript 对象的绑定(bind)应不区分大小写

node.js - 断言正在破坏 Mocha 测试中的异步功能

jenkins - Jenkins 中的访问文件参数