WebDriver +量角器与咕噜声

时间:2014-03-11 13:52:01

标签: webdriver gruntjs protractor

我正在尝试使用WebDriver和Protractor运行端到端测试。使用以下方式手动运行时没问题:     webdriver-manager开始 然后     量角器测试-UI / e2e / conf.js

现在我想从一个grunt命令启动它们,所以我尝试使用grunt-shell,用'&&'加入它们。但是当WebDriver等待时,测试永远不会开始。有人试过这个吗?

感谢。

3 个答案:

答案 0 :(得分:5)

有一个名为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'
]);

答案 1 :(得分:4)

您可以安装grunt-protractor-runner

npm install grunt-protractor-runner --save-dev

查看此博客的详细信息

http://www.codeorbits.com/blog/2014/01/26/angularjs-end-to-end-testing-with-protractor-easy-set-up-with-yeoman/

答案 2 :(得分:0)

尝试运行grunt --verbose以查看有关最新情况的详细信息。