【问题标题】:How to run Protractor如何运行量角器
【发布时间】:2019-01-19 00:01:12
【问题描述】:

我是 AngularJS 的新手。我正在尝试使用 Protractor 学习并进行一些端到端测试。我一直在浏览here 提供的信息。当我到达“与protractor myConf.js一起运行”的部分时,我被卡住了。

量角器是命令行程序吗?或者是什么?我要确定的是,我需要在什么环境下运行“protractor myConf.js”。我不想在全球范围内安装量角器。我想在本地环境中运行该模块。这是一个选项吗?

谢谢,

【问题讨论】:

  • 如果你使用 Grunt 作为任务管理器,我推荐grunt-protractor-runner
  • 有一个文件,Protracotr.cmd,这就是您使用参数 myConf.js “运行”的文件。我的文件夹是:C:\Users\brown.ericw\AppData\Roaming\npm\

标签: angularjs protractor


【解决方案1】:

你需要通过节点运行它。

所以从你的项目的基础开始;

node node_modules\protractor\bin\protractor test\myConf.js

【讨论】:

  • 当我这样做时,它根本不显示任何输出、结果或文本,它只是像运行一样转到下一行。
  • 我需要查看样本进行调查。您应该至少通过 npm 安装节点和量角器,并在 test\myConf.js 下安装一个有效的量角器 conf,以便上述运行。我通过 grunt 运行所有这些,但我知道您可能希望从最简单的方法开始。
  • @BrianF 为什么在文档示例中他们不需要调用“节点”命令和量角器模块的完整路径来运行?为什么他们可以直接调用量角器?这是因为我使用的是 Windows 吗?
  • @supertonsky 这可能与 protractor 在全球范围内有关,即 npm install -g protractor 。您还需要 PATH 环境变量中的 npm 二进制文件的路径,就像 grunt 或 mocha 一样,即 C:\Users\YOU\AppData\Roaming\npm 。如果您编辑 PATH,您可能需要重新启动。
  • @JulienBérubé 没错。我所做的是我重新安装了 NodeJS 并将二进制文件设置为 PATH 变量并做到了。
【解决方案2】:

您可以通过以下方式全局安装 Protractor:

$ npm install -g protractor

之后它应该可以在命令行上使用(Windows/Linux)

$ protractor protractor.conf.js

仅为当前项目安装:

$ npm install protractor --save-dev

它可以像这样通过node_modules 运行(Windows/Linux):

$ ./node_modules/.bin/protractor protractor.conf.js

您可以将其添加到您的package.json 以便于运行:

"scripts": {
    "test": "./node_modules/.bin/protractor protractor.conf.js"
}

然后:

$ npm test

【讨论】:

  • 在 npm 脚本中,./node_modules/.bin/ 前缀不是必需的,node_modules 中的任何二进制文件都会自动添加到 PATH。
  • @WildService npm 不会更新本地安装模块的路径。
  • 在 npm 脚本中运行命令时,node_modules 文件夹中的任何二进制文件都会自动添加到路径中,例如您可以将上面的示例简化为 "test": "protractor protractor.conf.js" 以使用本地安装的量角器。
  • 这个问题是网络服务器要在调用 npm test 之前运行 :( 有没有办法在量角器之前启动我们的服务器 Express/Hapi/Trails ?
  • 需要运行npm run test才能执行上述脚本test
【解决方案3】:

这些是入门文档:

https://github.com/angular/protractor/blob/master/docs/getting-started.md

您需要在您的机器上安装node.js,以及npm 节点包。一旦你安装了这两个东西,你就可以按照上面文档中的其他说明进行操作。

在您启动并运行Protractor 之前,应该只需要大约 5-10 分钟的安装时间。如果您仍然卡住,请告诉我。

【讨论】:

  • 嗯...我看到了 ./selenium/start 文件。但是,当我从命令行输入“开始”时,它只会打开一个命令窗口。如果我手动输入命令行代码“java -jar ...”,selenium 独立服务器将启动。但是,命令提示符永远不会返回。因此,我无法运行下一个命令“protractor node_modules/protractor/example/conf.js”。如果我在独立服务器运行时打开一个新的命令行窗口,它会显示“量角器未被识别为内部或外部命令......”我在 Windows 7 上运行它。
【解决方案4】:

你应该使用npm-run-all(或concurrentlyparallelshell),因为它对启动和终止命令有更多的控制。

一旦在本地安装了npm-run-onceprotractorhttp-server,你可以像这样修改package.json:

scripts: {
  "webdriver-start": "./node_modules/protractor/bin/webdriver-manager update && ./node_modules/protractor/bin/webdriver-manager start",
  "protractor": "./node_modules/protractor/bin/protractor ./tests/protractor.conf.js",
  "http-server": "./node_modules/http-server/bin/http-server -a localhost -p 8000",
  "python-example": "python -m SimpleHTTPServer",
  "test1": "npm-run-all -p -r webdriver-start http-server protractor",
  "test2": "npm-run-all -p -r webdriver-start python-example protractor"
}

-p = 并行运行命令。

-r = 当其中一个以零结束时终止所有命令。

运行npm run test1 将启动 Selenium 驱动程序,启动 http 服务器(为您提供文件)并运行量角器测试。完成所有测试后,它将关闭 http 服务器和 selenium 驱动程序。

【讨论】:

    【解决方案5】:

    这是使用 Typescript 的示例,但如果不是您的情况,您可以简单地删除所有“tsc”内容。将您的 package.json scripts 部分配置为如下所示:

      "scripts": {
        "postinstall": "node node_modules/protractor/bin/webdriver-manager update",
        "pretest": "npm run tsc",
        "test": "npm run eslint && npm run protractor",
        "eslint": "node node_modules/eslint/bin/eslint.js '*.js' 'test/**/*.js' 'test/**/*.ts'",
        "protractor": "node node_modules/protractor/bin/protractor",
        "start": "node node_modules/protractor/bin/webdriver-manager start",
        "tsc": "node node_modules/typescript/bin/tsc"
      }
    

    在一个终端运行npm start,在另一个终端运行npm test

    【讨论】:

      【解决方案6】:

      我有一个代码生成器,可以创建一个空的量角器项目。说明应该很容易理解:

      https://npmjs.org/package/generator-protractor

      【讨论】:

        【解决方案7】:

        我认为运行 protractor 的最佳方法是将其安装到您的项目本地,然后使用 npm 脚本运行它。

        备份一步,npm 本身使用基于文件系统的层次结构来查找可执行模块。如果你输入npm bin,npm 会告诉你它首先要寻找可执行文件的位置(例如[project]/node_modules/.bin)。如果你在 package.json 中包含 protractor,当你执行 npm 安装时,protractor 会在你的 .bin 目录中为 protractor 和 webdriver-manager 添加一个符号链接。

        您可以通过多种方式使用此信息来执行量角器。 ~~正确~~ 我认为最好的方法是使用 npm 脚本。当你使用 npm 脚本时,npm 会自动从本地 .bin 目录加载量角器。

        这是一个例子

        package.json
        {
          "name": "awesomeapp",
          "version": "1.0.0",
          "devDependencies": {
            "protractor": "latest"
          },
          "scripts": {
            "test-e2e": "protractor protractor.conf",
            "selenium": "webdriver-manager start"
          }
        }
        

        所以现在您可以使用 npm run selenium 运行您的 selenium 服务器,然后使用 npm run test-e2e 运行您的量角器测试。

        这也是跨平台的,所以如果您使用的是 mac 或 Windows,那么无论哪种方式都可以满足您的需求。

        注意:您可以在这些脚本中执行不跨平台的操作 (npm docs),因此如果跨平台对您很重要并且您想做任何花哨的事情,我建议您使用 @ 987654322@.

        附言不想弄乱上面的观点,但 npm 也有 pre 和 post 钩子,因此您可以使用一个命令更新和运行 selenium。

        "scripts": {
            "preselenium": "webdriver-manager update",
            "selenium":    "webdriver-manager start"
        }
        

        理论上Windows应该支持&&所以你也可以这样做但是ymmv...

        "scripts": {
          "selenium":    "webdriver-manager update && webdriver-manager start"
        }
        

        【讨论】:

          【解决方案8】:

          如果你在config.js 有任何套件,试试这个

          suites: {
          
            TESTCASES_RELATED_TO_SUITE1: ['TEST_CASES/Suite1/**/*spec.js'],
            TESTCASES_RELATED_TO_SUITE2: ['TEST_CASES/Suite2/**/*spec.js']
          
          },
          

          可以从命令行执行测试,如下所示:

          <path>protractor config.js --suite TESTCASES_RELATED_TO_SUITE1
          

          这只会执行一个测试套件。

          【讨论】:

            【解决方案9】:

            是的,可以使用以下命令运行量角器:

            npm install protractor
            

            然后您可以通过以下方式访问它:

            ./node_modules/.bin/protractor conf.js
            

            欲了解更多信息,请访问:Protractor - end-to-end testing for AngularJS。这是一个非常好的起点。

            【讨论】:

              【解决方案10】:

              我正在使用 IntelliJ 进行量角器测试。另请注意,为此,需要 IntelliJ Ultimate Edition 以及 node.js 和量角器安装。

              您可以在这里找到详细信息Protractor Setup on IntelliJ

              【讨论】:

                【解决方案11】:

                首先您需要从https://nodejs.org/en/download/ 安装node.js,然后使用“npm install -g protractor”安装量角器。这将全局安装量角器。我在本地安装量角器时遇到了问题。最好尝试全局安装。 或者您可以在 package.json 文件中提供所有依赖项,如下所示:

                {
                  "dependencies": {
                    "protractor": "4.0.3",//any latest versions of these.
                    "protractor-jasmine2-screenshot-reporter": "0.3.2",
                    "jasmine-terminal-reporter": "1.0.3"
                  },
                  "scripts": {
                    "postinstall": "node node_modules\\protractor\\bin\\webdriver-manager update"
                  }
                }
                

                在上面的 package.json 文件中也有报告测试结果的依赖项。你需要运行 webdriver-manager 更新。它是一个帮助运行 selenium 服务器实例的工具。

                您可以将所有内容放在 package.json 文件中并运行“npm install”来安装所有依赖项。这将为您创建一个“node_modules”文件夹。

                现在创建一个配置文件,例如:conf.js。这可能是这样的。

                // An example configuration file. There are the reporters which are used to give the test results. There are many reporters. You can use which ever is convenient. The below reporters are for example to show how to configure them.
                var HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter');
                var JasmineTerminalReporter = require('jasmine-terminal-reporter');
                
                //To get the Current Date and Time. To make the test output more clear, you can give date.
                var currentDate = new Date(),
                    currentHoursIn24Hour = currentDate.getHours(),
                    month = currentDate.getMonth() + 1,
                    totalDateString = currentDate.getDate() + '-' + month + '-' + currentDate.getFullYear() +
                        '-' + currentHoursIn24Hour + 'h-' + currentDate.getMinutes() + 'm';
                
                var htmlReporter = new HtmlScreenshotReporter({
                    pathBuilder: function (currentSpec, suites, browserCapabilities) {
                        'use strict';
                        return currentSpec._suite.description + totalDateString + '/' + browserCapabilities.get('browserName') + '/' + currentSpec.description;
                    },
                    dest: 'TestOutput',
                    cleanDestination: false,
                    showSummary: true,
                    showQuickLinks: true
                });
                
                
                exports.config = {
                
                    directConnect: true,//If you make this flag true, it connects the browser directly.
                    capabilities: {
                        'browserName': 'chrome'
                    },
                
                    //this is to bring up the test dependencies. Some kind of setup. run once
                    beforeLaunch: function () {
                        'use strict';
                        return new Promise(function (resolve) {
                            htmlReporter.beforeLaunch(resolve);
                        });
                    },
                
                    //once per capabilities.
                    onPrepare: function () {
                        jasmine.getEnv().addReporter(htmlReporter);
                        jasmine.getEnv().addReporter(new JasmineTerminalReporter({
                            isVerbose: true,
                            showColors: true
                        }));
                    },
                
                    //A callback function called once all tests have finished running and
                    // the WebDriver instance has been shut down.
                    afterLaunch: function (exitCode){
                        return new Promise(function(resolve){
                            htmlReporter.afterLaunch(resolve.bind(this, exitCode));
                        });
                    },
                
                    getPageTimeout: 120000,
                    allScriptsTimeout: 120000,
                    specs: ['../TestScripts/*.js']//This contains the test files.
                };
                

                完成设置后,创建一个测试文件。测试是使用包含“describe”和“it”的 jasmine 框架编写的。 “describe” 将持有其中包含测试的“it”。你可以通过这个:http://www.protractortest.org/#/

                现在使用“protractor conf.js”运行测试。这将在我们在配置文件中设置的 TestOutput 文件夹中运行测试并生成报告。

                【讨论】:

                  【解决方案12】:

                  这里有完整的初学者教程:Protractor for beginners video

                  【讨论】:

                    【解决方案13】:

                    开始

                    我们研究了 Protractor 与 Chrome 无头、多个浏览器与 Sauce Labs 的集成。 让我们看看测试自动化执行报告,我们如何集成它。

                    很棒的质量检查

                    先决条件

                    npm 与 Node.js 一起分发 - 这意味着当您下载 Node.js 时,您的计算机上会自动安装 npm。

                    1. Install nodejs
                    

                    首先,在您的系统上全局安装量角器: 将量角器安装为开发依赖项:

                    2. run npm install -g Protractor
                    
                    3. run npm install protractor --save-dev
                    

                    要手动安装和启动独立的 Selenium 服务器,请使用 Protractor 附带的 webdriver-manager 命令行工具。 这将安装服务器和 ChromeDriver。

                    4. run npm install -g webdriver-manager
                    
                    5. run updated webdriver-manager
                    

                    这将启动服务器。你会看到很多输出日志,以 INFO 开头。最后一行将是“信息 - 已启动 org.openqa.jetty.jetty.Server”。

                    5. run start webdriver-manager
                    

                    在您进行测试会话时让服务器保持运行。 在您的配置文件中,将 seleniumAddress 设置为正在运行的服务器的地址。默认为http://localhost:4444/wd/hub

                    6. Finally run your script - Protractor<location of your config file>conf.js
                    

                    构建和测试

                    签出 github:https://github.com/shahing/Protractor-Web-Automation

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-09-27
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多