Protractor - 简介
本章向您介绍 Protractor,您将了解这个测试框架的起源以及为什么必须选择它、该工具的工作原理和局限性。
什么是Protractor?
Protractor 是一个用于 Angular 和 AngularJS 应用程序的开源端到端测试框架。它是由 Google 在 WebDriver 之上构建的。它还可以替代现有的 AngularJS E2E 测试框架“Angular Scenario Runner”。
它还作为一个解决方案集成商,结合了 NodeJS、Selenium、Jasmine、WebDriver、Cucumber、Mocha 等强大技术。除了测试 AngularJS 应用程序外,它还为普通 Web 应用程序编写自动回归测试。它允许我们像真实用户一样测试我们的应用程序,因为它使用实际的浏览器运行测试。
下图将简要概述Protractor -
请注意,在上图中,我们有 -
Protractor - 如前所述,它是 WebDriver JS 的包装器,专门为角度应用程序设计。
Jasmine - 它基本上是一个用于测试 JavaScript 代码的Behave驱动开发框架。我们可以使用 Jasmine 轻松编写测试。
WebDriver JS - 它是 selenium 2.0/WebDriver 的 Node JS 绑定实现。
Selenium - 它只是自动化浏览器。
起源
如前所述,Protractor 是现有 AngularJS E2E 测试框架“Angular Scenario Runner”的替代品。基本上,Protractor 的起源是从 Scenario Runner 的结束开始的。这里出现的一个问题是我们为什么需要构建 Protractor?为了理解这一点,我们首先需要了解一下它的前身——Scenario Runner。
Protractor的成立
Julie Ralph 是 Protractor 开发的主要贡献者,她在 Google 内部的其他项目中拥有以下 Angular Scenario Runner 的经验。这进一步成为构建 Protractor 的动机,特别是为了填补空白 -
“我们尝试使用 Scenario Runner,但发现它确实无法完成我们需要测试的事情。我们需要测试诸如登录之类的事情。您的登录页面不是 Angular 页面,并且 Scenario Runner 无法处理这一点。它无法处理诸如弹出窗口和多个窗口、浏览浏览器历史记录之类的事情。”
Protractor 最大的优势是 Selenium 项目的成熟性,它封装了它的方法,因此可以轻松地用于 Angular 项目。Protractor 的设计方式是测试应用程序的所有层,例如 Web UI、后端服务、持久层等。
为什么是Protractor?
众所周知,几乎所有的应用程序都是使用 JavaScript 进行开发。当 JavaScript 的大小增加并且由于应用程序本身数量的增加而变得复杂时,测试人员的任务变得困难。大多数时候,在 AngularJS 应用程序中捕获 Web 元素变得非常困难,通过使用 JUnit 或 Selenium WebDriver 使用扩展的 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 - 在第一步中,我们需要编写测试。这可以在茉莉花、摩卡咖啡或Cucumber的帮助下完成。
步骤 2 - 现在,我们需要运行测试,这可以在 Protractor 的帮助下完成。它也称为测试运行程序。
步骤 3 - 在此步骤中,Selenium 服务器将帮助管理浏览器。
步骤 4 - 最后,在 Selenium WebDriver 的帮助下调用浏览器 API。
优点
这个开源端到端测试框架具有以下优点 -
Protractor 是一款开源工具,非常易于安装和设置。
与 Jasmine 框架配合良好,可以创建测试。
支持测试驱动开发(TDD)。
包含自动等待,这意味着我们不需要在测试中显式添加等待和睡眠。
提供 Selenium WebDriver 的所有优点。
支持通过多个浏览器并行测试。
提供自动同步的好处。
具有优异的测试速度。
局限性
这个开源端到端测试框架具有以下限制 -
不会发现浏览器自动化中的任何垂直领域,因为它是 WebDriver JS 的包装器。
JavaScript 知识对于用户来说至关重要,因为它仅适用于 JavaScript。
只提供前端测试,因为它是UI驱动的测试工具。