【问题标题】:WebDriver + Protractor with gruntWebDriver + Protractor with grunt
【发布时间】:2014-04-15 04:25:43
【问题描述】:
我正在尝试使用 WebDriver 和 Protractor 运行端到端测试。当我手动运行它时没问题:
webdriver-manager 启动
然后
量角器测试-UI/e2e/conf.js
现在我想从 grunt 命令启动它们,所以我尝试使用 grunt-shell,用 '&&' 加入它们。但是随着 WebDriver 的等待,测试永远不会开始。以前有人试过吗?
谢谢。
【问题讨论】:
标签:
webdriver
gruntjs
protractor
【解决方案1】:
有一个名为 Grunt-shell-spawn (Github Repo) 的 Grunt-shell 分支,它允许您异步运行后台进程。这恰好与启动 selenium webdriver 服务器非常有效,有助于自动化量角器测试过程。有一些专门用于启动 webdriver 服务器的 grunt 插件,但根据我的经验,它们都有小错误,一旦测试完成就会导致错误,或者需要您标记标志 keepAlive: true,这意味着它不会终止 webdriver 服务器进程强制您可以按 ctrl+c 或关闭并重新打开命令提示符,这在开发人员使用功能测试和持续集成 (CI) 服务器时可能会导致很多问题。 Grunt-shell-spawn 能够终止进程,正如您在我的“测试”任务结束时看到的那样,这对于保持一致性和易用性非常宝贵。
'use strict';
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-shell-spawn');
grunt.loadNpmTasks('grunt-protractor-runner');
var path = require('path');
grunt.initConfig({
...
...
...
shell: {
updateserver: {
options: {
stdout: true
},
command: "node " + path.resolve('node_modules/protractor/bin/webdriver-manager') + ' update --standalone --chrome'
},
startserver: {
options: {
stdout:false,
stdin: false,
stderr: false,
async:true
},
command: 'node ' + path.resolve('node_modules/protractor/bin/webdriver-manager') + ' start --standalone'
},
});
grunt.registerTask('test',[
'shell:updateserver',
'shell:startserver',
'protractor:e2e',
'shell:startserver:kill'
]);
【解决方案3】:
尝试运行 grunt --verbose 以查看有关正在发生的事情的更多详细信息。