protractor量角器入门


备注

Protractor是AngularJS应用程序的端到端测试框架。

Protractor是Selenium WebDriver周围的包装器(构建在顶部),因此它包含Selenium WebDriver中提供的所有功能。此外,Protractor提供了一些新的定位器策略和功能,这对于AngularJS应用程序的自动化非常有用。示例包括:waitForAngular,By.binding,By.repeater,By.textarea,By.model,WebElement.all,WebElement.evaluate等。

版本

发布数据
0.0.1 2016年8月1日

首先使用Protractor进行测试

量角器只需要两个文件来运行第一个测试,spec(测试代码)文件和配置文件。 spec文件包含测试代码,另一个包含配置详细信息,如spec文件路径,浏览器详细信息,测试URL,框架参数等。要编写第一个测试,我们将只提供selenium服务器地址和spec文件路径。其他参数如浏览器,timeout,框架将被选为默认值。

Protractor的默认浏览器是Chrome。

conf.js - 配置文件

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
};
 

spec.js - 规范(测试代码)文件

describe('first test in protractor', function() {
  it('should verify title', function() {
    browser.get('https://angularjs.org');

    expect(browser.getTitle()).toEqual('AngularJS — Superheroic JavaScript MVW Framework');
  });
});
 

seleniumAddress - 运行webdriver服务器的服务器的路径。

specs - 包含测试文件路径的数组元素。可以通过逗号分隔值指定多个路径。

describe - 来自Jasmine框架的语法。 describe 语法sta

安装和设置量角器(在Windows上)

要求:量角器需要在安装之前安装以下依赖项:

  • Java JDK 1.7或更高版本
  • Node.js v4或更高版本

安装:

从以下URL下载并安装Node.js: https//nodejs.org/en/

要查看Node.js安装是否成功,您可以检查环境变量。系统变量下的“路径”将自动更新。

用于检查Node.js安装的路径变量


您还可以通过在命令提示符下键入命令npm -version 来检查相同内容,该命令将为您提供已安装的版本。

用于检查Node.js安装的命令


现在Protractor可以通过两种方式安装:本地或全球。

我们可以在指定的文件夹或项目目录位置安装量角器。如果我们安装在项目目录中,每次运行时,我们都应该只从该位置运行。

要在项目目录中本地安装,请导航到项目文件夹并键入命令

npm install protractor


要全局安装Protractor,请运行以下命令:

$ npm install -g protractor
 

这将安装两个命令行工具, protractorwebdriver-manager
运行protractor --version 以确保成功安装量角器。

webdriver-manager 用于下载浏览器驱动程序二进制文件并启动selenium服务器。
下载浏览器驱动程序二进制文件:

$ webdriver-manager update
 

使用以下命令启动selenium服务器:

$ webdriver-manager start
 

要下载Internet Explorer驱动程序, webdriver-manager update --ie 在命令提示符下运行命令webdriver-manager update --ie 。这将在您的selenium文件夹中下载IEDriverServer.exe

待测试

量角器允许将测试设置为待定。这意味着量角器将不会执行测试,而是输出:

Pending:
1) Test Name
Temporarily disabled with xit
 

或者,如果使用xdescribe()禁用:

Pending:
1) Test Name
No reason given
 

组合

  • xdescribe()中的xit()将输出xit()响应。
  • fdescribe()中的xit()仍将被视为待处理。
  • xdescribe()中的fit()仍然会运行,没有挂起的测试会输出任何内容。

量角器:企业角度应用的E2E测试

量角器安装和设置

步骤1 :从此处下载并安装NodeJS。确保您拥有最新版本的节点。在这里,我使用的是节点v7.8.0。您需要安装Java Development Kit(JDK)才能运行selenium。

步骤2 :打开终端并输入以下命令以全局安装量角器。

npm install -g protractor
 

这将安装两个工具,如量角器和webdriver管理器。您可以通过以下命令验证您的量角器安装: protractor –version. 如果成功安装了Protractor,系统将显示已安装的版本(即版本5.1.1)。否则,您将不得不重新检查安装。步骤3:更新webdriver管理器以下载必要的二进制文件。

webdriver-manager update
 

步骤4:以下命令将启动Selenium Server。此步骤将在后台运行Web驱动程序管理器,并将侦听通过量角器运行的任何测试。

webdriver-manager start您可以在http://localhost:4444/wd/hub/static/resource/hub.html. 查看有关服务器状态的信息http://localhost:4444/wd/hub/static/resource/hub.html.

使用量角器编写第一个测试用例:

在开始编写测试用例之前,我们必须准备两个文件,即配置文件和spec文件。

在配置文件中:

//In conf.js
exports.config = {
    baseUrl: ‘http://localhost:8800/adminapp’,
    seleniumAddress: ‘http://localhost:4444/wd/hub',
    specs: [‘product/product_test.js’],
    directConnect : true,
    capabilities :{
        browserName: ‘chrome’
    }
}
 

基本了解配置文件中使用的术语:

baseUrl - 正在测试的应用程序的基本URL。

seleniumAddress - 连接到已运行的Selenium Server。

specs - spec文件的位置

directConnect :true - 直接连接到浏览器驱动程序。

功能 - 如果要在单个浏览器上进行测试,请使用功能选项。如果要在多个浏览器上进行测试,请使用multiCapabilities数组。

您可以从此处找到更多配置选项。他们用其定义描述了所有可能的术语。

在Spec文件中:

//In product_test.js

    describe(‘Angular Enterprise Boilerplate’, function() {
      it('should have a title', function() {
        browser.get('http://localhost:8800/adminapp’);
        expect(browser.getTitle()).toEqual(‘Angular Enterprise Boilerplate’);
      });
    });
 

基本了解spec文件中使用的术语:

默认情况下,Protractor使用jasmine框架作为其测试界面。 'describe'和'it'语法来自jasmine框架。您可以从这里了解更多信息。运行第一个测试用例:

在运行测试用例之前,请确保您的webdriver管理器和您的应用程序在终端的不同选项卡中运行。

现在,运行测试:

Protractor app/conf.js
 

您应该看到Chrome浏览器打开了您的应用程序URL并关闭它自己。测试输出应为1次测试,1次断言,0次失败。

好样的!您成功运行了第一个测试用例。

选择性跑步测试

量角器可以使用fdescribe()而不是describe()选择性地运行测试组。

fdescribe('first group',()=>{
    it('only this test will run',()=>{
        //code that will run
    });
});
describe('second group',()=>{
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

量角器可以使用fit()而不是它()选择性地在组内运行测试。

describe('first group',()=>{
    fit('only this test will run',()=>{
        //code that will run
    });
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

如果fdescribe()中没有fit(),则每个it()都会运行。但是,fit()将在同一个describe()或fdescribe()中阻止it()调用。

fdescribe('first group',()=>{
    fit('only this test will run',()=>{
        //code that will run
    });
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

即使fit()在describe()而不是fdescribe()中,它也会运行。此外,fdescribe()中不包含fit()的任何it()都将运行。

fdescribe('first group',()=>{
    it('this test will run',()=>{
        //code that will run
    });
    it('this test will also run',()=>{
        //code that will also run
    });
});
describe('second group',()=>{
    it('this code will not run',()=>{
        //code that won't run
    });
    fit('this code will run',(){
        //code that will run
    });
});
 

写一个量角器测试

打开一个新的命令行或终端窗口,并创建一个干净的文件夹进行测试。

量角器需要运行两个文件,一个spec文件和一个配置文件。

让我们从一个简单的测试开始,该测试导航到AngularJS网站中的待办事项列表示例,并在列表中添加一个新的待办事项。

将以下内容复制到spec.js

describe('angularjs homepage todo list',function(){it('应添加todo',function(){browser.get(' https://angularjs.org ');

element(by.model('todoList.todoText')).sendKeys('write first protractor test');
element(by.css('[value="add"]')).click();

var todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write first protractor test');

// You wrote your first test, cross it off the list
todoList.get(2).element(by.css('input')).click();
var completedAmount = element.all(by.css('.done-true'));
expect(completedAmount.count()).toEqual(2);});});