Protractor - 简介

本章为您介绍 Protractor,您将了解此测试框架的起源以及为什么要选择它,以及此工具的工作原理和局限性。

什么是 Protractor?

Protractor 是一个开源的端到端 Angular 和 AngularJS 应用程序测试框架。它由 Google 在 WebDriver 之上构建。它还可以替代现有的 AngularJS E2E 测试框架"Angular Scenario Runner"。

它还可以用作解决方案集成器,结合了 NodeJS、Selenium、Jasmine、WebDriver、Cucumber、Mocha 等强大的技术。除了测试 AngularJS 应用程序外,它还可以为普通 Web 应用程序编写自动回归测试。它允许我们像真实用户一样测试我们的应用程序,因为它使用实际的浏览器运行测试。

下图将简要概述 Protractor −

Protractor 概述

请注意,在上图中,我们有 −

  • Protractor − 如前所述,它是 WebDriver JS 的包装器,专为 Angular 应用程序设计。

  • Jasmine − 它基本上是一个用于测试 JavaScript 代码的行为驱动开发框架。我们可以使用 Jasmine 轻松编写测试。

  • WebDriver JS −它是 selenium 2.0/WebDriver 的 Node JS 绑定实现。

  • Selenium − 它只是使浏览器自动化。

起源

如前所述,Protractor 是现有 AngularJS E2E 测试框架"Angular Scenario Runner"的替代品。基本上,Protractor 的起源始于 Scenario Runner 的终结。这里出现的一个问题是,我们为什么要构建 Protractor?要理解这一点,我们首先需要了解它的前身 - Scenario Runner。

Protractor 的起源

Protractor 开发的主要贡献者 Julie Ralph 在 Google 的其他项目中有过使用 Angular Scenario Runner 的经验。这进一步成为构建 Protractor 的动机,特别是为了填补空白 −

"我们尝试使用 Scenario Runner,但发现它真的无法完成我们需要测试的事情。我们需要测试诸如登录之类的内容。您的登录页面不是 Angular 页面,Scenario Runner 无法处理该页面。它也无法处理诸如弹出窗口和多个窗口、浏览浏览器历史记录之类的内容。"

Protractor 的最大优势是 Selenium 项目的成熟度,它封装了其方法,因此可以轻松用于 Angular 项目。Protractor 的设计方式是测试应用程序的所有层,例如 Web UI、后端服务、持久层等。

为什么使用 Protractor?

众所周知,几乎所有应用程序都使用 JavaScript 进行开发。当 JavaScript 的大小增加并且由于应用程序本身数量的增加而变得复杂时,测试人员的任务变得困难。大多数情况下,使用 JUnit 或 Selenium WebDriver 来捕获 AngularJS 应用程序中的 Web 元素、使用扩展的 HTML 语法来表达 Web 应用程序组件会变得非常困难。

这里的问题是,为什么 Selenium Web Driver 无法找到 AngularJS Web 元素?原因是 AngularJS 应用程序具有一些扩展的 HTML 属性,如 ng-repeater、ng-controller 和 ng-model 等,而 Selenium 定位器中未包含这些属性。

这里,Protractor 的重要性就显现出来了,因为 Selenium 顶部的 Protractor 可以处理和控制 AngularJS Web 应用程序中的那些扩展 HTML 元素。这就是为什么我们可以说大多数框架专注于对 AngularJS 应用程序进行单元测试,而 Protractor 用于测试应用程序的实际功能。

Protractor 的工作原理

测试框架 Protractor 与 Selenium 配合使用,提供自动化测试基础架构,用于模拟用户与在浏览器或移动设备中运行的 AngularJS 应用程序的交互。

可以通过以下步骤了解 Protractor 的工作原理 −

  • 步骤 1 − 第一步,我们需要编写测试。可以借助 Jasmine 或 Mocha 或 Cucumber 来完成。

  • 步骤 2 − 现在,我们需要运行测试,这可以借助 Protractor 来完成。它也被称为测试运行器。

  • 步骤 3 − 在此步骤中,Selenium 服务器将帮助管理浏览器。

  • 步骤 4 −最后,在 Selenium WebDriver 的帮助下调用浏览器 API。

Protractor 的工作方式

优点

这个开源端到端测试框架具有以下优点 −

  • 作为一个开源工具,Protractor 非常易于安装和设置。

  • 与 Jasmine 框架配合良好,可以创建测试。

  • 支持测试驱动开发 (TDD)。

  • 包含自动等待,这意味着我们不需要在测试中明确添加等待和休眠。

  • 提供 Selenium 的所有优点WebDriver。

  • 支持通过多个浏览器进行并行测试。

  • 提供自动同步的好处。

  • 具有出色的测试速度。

局限性

这个开源端到端测试框架具有以下局限性 −

  • 由于它是 WebDriver JS 的包装器,因此没有发现浏览器自动化中的任何垂直领域。

  • 用户必须具备 JavaScript 知识,因为它仅适用于 JavaScript。

  • 仅提供前端测试,因为它是一个 UI 驱动的测试工具。