【问题标题】:How to run execute shell command in jenkins in different terminals如何在不同终端的jenkins中运行execute shell命令
【发布时间】:2017-08-28 04:42:06
【问题描述】:

我正在通过 jenkins 运行我的量角器测试,我的 package.json 看起来像这样:

{"name": "ProtractorTest",
  "version": "0.0.1",
  "main": "conf.js",
  "scripts": {
    "setup": "npm install && node node_modules/protractor/bin/webdriver-manager update",
    "e2e-start": "node node_modules/protractor/bin/webdriver-manager start",
    "test": "protractor protractor.conf.js"
  }

我正在尝试使用 jenkins 运行脚本执行 shell 构建步骤,如下所示 Jenkins screenshot

但这会尝试依次运行 setup、e2e-start、test。由于“e2e-start”启动了 selenium 服务器,所以我在控制台中看到“INFO - Selenium Server is up and running....”然后 npm run test 永远不会运行。我认为这是因为“npm run test”应该在不同的终端运行,因为当我们手动运行时,我们在一个终端启动服务器并在不同的终端运行测试。那么,我怎样才能使用詹金斯来实现这一点。

【问题讨论】:

  • jenkins执行shell有什么问题?

标签: jenkins protractor package.json


【解决方案1】:

尝试在配置文件中使用下面提到的选项,然后量角器将负责启动和停止服务器本身,然后您不需要启动和停止 wendriver manager

    directConnect: true
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub',

你也可以提到 selenium server jar。

    seleniumServerJar: '../utils/selenium-server-standalone-2.53.1.jar',
    seleniumPort: 4444, 

另一种方法是使用 jenkins selenium 插件

【讨论】:

  • 我不能使用 directConnect :是的,因为这仅适用于 chrome 和 firefox。我的问题是启动服务器,然后在jenkins中启动测试。如果在 jenkin 的执行 shell 部分,我启动服务器然后启动测试,那么测试永远不会运行,因为这必须在不同的终端中完成。请参阅我在第一篇文章中附上的詹金斯截图。
  • 您使用哪个浏览器进行测试?
  • phantomjs 或 safari
  • 请看上面的答案。
【解决方案2】:

对于 phantomjs 来说很简单。

  1. 下载 selenium 服务器 jar 并将其保存在一个文件夹中。
  2. 在量角器 conf.js 文件中注释掉 directConnect 和 seleniumAddress。
  3. 将它们包含在您的配置中。

    seleniumServerJar: 'location of the jar',
    seleniumPort: 4444,
    

这些设置将在测试开始前启动 selenium 服务器,并在测试完成时优雅地关闭它。您无需为显式启动 selenium 服务器而烦恼。 注意:如果您使用的是 java 7,请使用 selenium-server-standalone-2.53.1.jar

【讨论】:

  • 我实现这一点的方法是,我使用 gruntfile.js 并使用 protractor-runner 插件,我指定了 seleniumserver jar 位置。然后量角器运行器负责启动服务器,然后开始测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多