我一直在项目中使用Selenium / Java / Maven进行功能自动化测试。但是,由于angular越来越受欢迎,因此开发团队已开始将其用于项目中新Web应用程序的开发。并且大量强调使用量角器进行测试自动化。而不是硒,因为它有助于轻松识别角度元素。为了使从硒到量角器的转换平稳高效,我应该采取哪些步骤(就我需要掌握的其他技能而言)?

评论

您需要过渡吗?编写自定义定位器很容易,除此之外,还有什么好处?

我刚刚了解到,新Angular(2+)的新量角器只有标准的id / name / css定位器,而不再支持特定于角度的定位器。我看不出有任何理由转而使用量角器,这迫使我放弃了在Python中开发页面对象和框架的所有投资。另外,我个人认为,但是我认为Python优于JavaScript,这是不转向量角器的另一个原因

有关详细信息,请参见sqa.stackexchange.com/questions/14555/…

量角器和JavaScript是角度应用的一种方式。 Java时代已经过去。

这是乏味的方式。相反,您可以说-从量角器到硒。您为什么要考虑这种过渡。

#1 楼

在Niels的出色答案中添加几个注释。

Protractor包装了WebDriverJS,它是Javascript Selenium绑定-换句话说,Protractor确实通过Selenium WebDriver与浏览器进行交互。 Protractor提供了一个非常方便的API,并具有一些特定于Angular的独特功能,例如Angular特定元素的定位策略(by.model()by.binding()by.repeater()),Protractor和Angular之间的自动同步,有助于最大程度地减少在此处和此处使用显式等待的时间;内置了对BrowserStack和SauceLabs的支持,测试并行化等等。

过渡到Protractor / JavaScript的另一个好处是应用程序和测试代码库都可以用相同的语言。

我已经看到一些队友从Selenium / Java,Selenium / Python或Selenium / C#过渡到Protractor / JavaScript。常见的挑战和困难是:


了解一般的异步测试执行

承诺和控制流:何时解决承诺,何时不履行承诺;如何在功能之间传递承诺;何时使用deferred以及如何手动履行/拒绝诺言;在Jasmine中使用done()
解决易碎的端到端测试
测试代码的设计和组织-保留页面对象的位置和方式,如何将页面对象彼此包装

评论


我只是在接受培训时被告知,Angular 2+不支持使用绑定/模型等的定位器,仅支持标准id / name / css。只有旧的/过时的AngularJS才能通过绑定等进行定位。您的经验是什么?

–Peter M.-代表莫妮卡(Monica)
17-10-10在14:41

@PeterMasiar对,按模型和绑定,不适用于Angular 2+。量角器虽然在webdriverjs之上仍然有一个不错的抽象层,并且角度到量角器同步是一个卖点。令我担心的另一件事是,量角器在github上的活动越来越少-有一些悬而未决的长期问题尚未解决。很长一段时间都没有新功能。谢谢。

– alecxe♦
17-10-10在16:29



@PeterMasiar顺便说一句,如果我现在要从头开始测试自动化工作,我会选择Python / Selenium :)

– alecxe♦
17-10-10在16:32

#2 楼

量角器是Selenium,但随后与工具和辅助方法集成在一起。如果您知道编程和Selenium,应该相对容易掌握。


Protractor是Angular和AngularJS应用程序的端到端测试框架。 Protractor是在
WebDriverJS之上构建的Node.js程序。量角器针对在真实浏览器中运行的应用程序运行测试,并以用户的方式与其交互。测试运行器框架。具有这些技术的一些基本技能将有所帮助。

量角器使用基于Selenium的WebDriverJS。因此Protractor并不是Selenium的替代品,而是Selenium之上的额外一层,使AngularJS应用程序的测试更加容易。研究WebDriverJS规范也将有所帮助。它简化了JavaScript的异步特性,这可能是从Java迁移时您面临的最大挑战。

#3 楼

我本人成功地遵循了以下转换过程:


学习了基本的JavaScript,包括像
变量,循环,条件,函数之类的基本构造。
学习了高级JavaScript,尤其是异步性质及其问题。回调的用法和匿名函数的作用。
一旦我掌握了异步执行的基本概念,就了解了Promises是什么,以及它们如何优雅地解决了异步问题。
学习了基本的Protractor API,该API进一步称为web驱动程序方法和兑现承诺。
学习了Jasmine(或Mocha)测试框架。使用Mocha,您还必须学习其他的断言库,
Chai,而Jasmine具有内置的断言库。
学习了测试运行器Gulp来捆绑和执行测试套件。最新的ESx版本以及它们如何优雅地简化或解决javaScript标准问题。


由于所有语言绑定中的底层硒API(例如findElement)都是相同的

硒,因此对于来自不同语言绑定的人来说完全不是挑战。




基本设置和执行

设置

首先下载并安装Nodejs。

使用npm通过以下方式全局安装Protractor:
/>这将安装两个命令行工具,量角器和webdriver-manager。尝试运行量角器--version以确保其正常工作。使用它通过以下命令下载必要的二进制文件:

npm install -g protractor


现在使用以下命令启动服务器:这将启动Selenium服务器并输出一堆信息日志。您的量角器测试将向该服务器发送请求以控制本地浏览器。您可以在http:// localhost:4444 / wd / hub上查看有关服务器状态的信息。

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

量角器需要运行两个文件,即规范文件和配置文件。

让我们编写一个简单的测试,导航到AngularJS网站上的待办事项列表示例,并将新的待办事项添加到列表中。 js:

webdriver-manager update


describe和it语法来自Jasmine框架。 browser是Protractor创建的全局变量,它用于浏览器级别的命令,例如用browser.get导航。

配置

现在创建配置文件。将以下代码复制到conf.js:它将对所有其他配置使用默认设置。 Chrome是默认浏览器。

运行测试

现在运行测试:

webdriver-manager start


您应该看到一个Chrome浏览器窗口打开,并导航到AngularJS页面中的todo列表,然后自行关闭(这应该非常快!)。

通过教程了解更多信息。

来源:量角器文档

快乐的学习朋友.. :)

#4 楼

量角器和Selenium都用于自动化基于Web的应用程序的前端。通常,大多数人都非常了解Selenium(Java和Python绑定),并且害怕在Selenium之上选择其他任何工具。我将在本文中比较Selenium和Protractor,这将帮助您确定最适合您需求的工具。

Selenium官方网站说:



Selenium使浏览器自动化。它没有指定任何基于特定技术的Web应用程序。 Selenium可用于使需要浏览器的任何基于技术的应用程序自动化。


Protractor的官方网站说:



Protractor是Angular和AngularJS应用程序的端到端测试框架。量角器是专门为自动化Angular应用程序而设计的。尽管量角器也可以用于任何非角度应用,但是会错过量角器在角度应用中的美感。
有关详细比较,请参阅量角器与硒的比较。