41

我想将 Protractor 与 Yeoman 生产的脚手架集成。我遵循了一个教程,其中较旧scenario-runner的用于设置 e2e 测试(通过grunt)。

我想升级我的脚手架并改用 Protractor。
有什么想法吗?

4

3 回答 3

85
  1. 安装protractorgrunt-protractor-runnernpm

    npm install protractor grunt-protractor-runner --save-dev
    
  2. 为量角器()创建一个配置文件,protractor.conf.js更改您的测试文件和测试服务器:specsbaseUrl

    exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',
      specs: ['test/e2e/*_test.js'],
      baseUrl: 'http://localhost:9001' //default test port with Yeoman
    }
    
  3. 更新你的Gruntfile.js,在 karma 任务之后添加以下内容:

    protractor: {
      options: {
        keepAlive: true,
        configFile: "protractor.conf.js"
      },
      run: {}
    }
    
  4. 添加被测量角器任务

    grunt.registerTask('test', [
      'clean:server',
      'concurrent:test',
      'autoprefixer',
      'connect:test',
      'karma',
      'protractor:run'
    ]);
    
  5. 下载并启动 selenium 服务器:

    node_modules/protractor/bin/webdriver-manager update
    node_modules/protractor/bin/webdriver-manager start
    

    (在 Windows 中:)

    node node_modules/protractor/bin/webdriver-manager update
    node node_modules/protractor/bin/webdriver-manager start
    
  6. 更新你的package.json,在之后添加以下内容"devDependencies"。这将在之后运行命令,npm install因此您无需每次都记住。

    "scripts": {
      "install": "node node_modules/protractor/bin/webdriver-manager update"
    }
    
  7. 使用 grunt 运行测试

    grunt test
    

如果您希望量角器为您启动服务器,请删除

seleniumAddress: 'http://localhost:4444/wd/hub',

from protractor.conf.js,然后 runninggrunt test将在测试期间启动一个独立的 selenium 实例,并在运行测试套件后退出它。

于 2013-12-06T02:22:21.527 回答
10

要添加到现有答案中的一件事;如果您想自动启动 Selenium 服务器,您还必须指定 seleniumServerJar 和 chromeDriver(如果使用 Chrome)的位置,否则测试将无法工作,直到您手动启动 Selenium 服务器(确保运行“webdriver-管理器更新”首先从命令行):

protractor: {
        options: {
            keepAlive: false,
            configFile: "test/config/protractor.conf.js",
            noColor: true, // If true, protractor will not use colors in its output.

            args: {
                seleniumServerJar: 'node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
                chromeDriver: 'node_modules/protractor/selenium/chromedriver.exe'
            }
        },
        run: {

        }
    },
于 2014-02-18T00:56:12.400 回答
5

正如@user2172816在他们的回答中提到的那样——seleniumAddress: 'http://localhost:4444/wd/hub'从你的量角器配置中省略通常会导致量角器为你启动一个 Selenium 实例。

作为替代方案,您可以使用grunt-protractor-webdriver来启动 Selenium:

1) 安装并保存grunt-protractor-webdriver

npm install grunt-protractor-webdriver --save-dev

2)将以下内容添加到您的 Grunt 定义函数中:

grunt.loadNpmTasks('grunt-protractor-webdriver');

3) 添加以下示例 protractor webdriver 任务:

protractor_webdriver: {
        start: {
            options: {
                path: 'node_modules/protractor/bin/',
                command: 'webdriver-manager start'
            }
        }
    }

4)在运行量角器之前添加protractor_webdriver到您的任务,例如test

grunt.registerTask('test', [
    'clean:server',
    'concurrent:test',
    'autoprefixer',
    'connect:test',
    'karma',
    'protractor_webdriver',
    'protractor:run'
]);
于 2014-09-26T09:20:38.637 回答