什么是Protractor?

Protractor是一种用于Web应用程序测试的自动化测试工具,它集成了Jasmine、Selenium Webdriver、Node.js等框架及工具。

Protractor测试工具是一个端到端的基于行为驱动测试的框架。它可以同时针对AngularJS应用及非AngularJS应用程序开展自动化测试。

对比 Protractor 与 Selenium WebDriver

Protractor 和 Selenium WebDriver有什么不同呢?我们可以通过以下问题得知答案:

  • 你是否无法准确判断网页最终加载的时间?(所有异步元素都准备好并处理完成)
  • 你是否厌倦了在代码中添加等待和休眠?
  • 难于定位AngularJS元素?
  • 对不断变化的ID定位感到烦躁?
  • 是否要创建自己的定位器?

如果你对这些问题的回答是肯定的,Protractor就是你想要的答案。

功能

Protractor是构建在SeleniumWebDriver之上的包装库,提供了Selenium的所有功能以及许多有用的附加功能。以下列举一些强大的功能:

1) WaitForAngular

Protractor脚本可以使WebDriver等待Angular完成渲染,并确保无未完成的$http或$timeout调用,然后再继续执行后续脚本。Protractor在每个WebDriver操作之前自动应用此命令。

这意味着你不再需要手动将等待的脚本添加到脚本中,Protractor将自动等待Web元素加载,然后执行接下来的步骤。

2) 简洁的定位语法

Protractor能够导出一个全局函数元素,它接受一个定位器并返回一个ElementFinder对象。ElementFinder提供了对页面元素常用的操作方法,如click()、getText()、sendKeys()等。

这个全局函数有助于减少元素定位语法:

Copy to Clipboard

3) 新增的定位策略

Protractor额外添加了一些新的定位器策略和功能,以帮助定位AngularJS元素:By.binding, By.repeater, By.textarea, By.model, WebElement.all, WebElement.evaluate。

使用说明

因为Protractor是使用Node.js实现的,所以需要安装Node.js,安装命令如下:

Copy to Clipboard

还需要安装Selenium服务器和ChromeDriver。使用以下命令:

Copy to Clipboard

现在,可以初始化第一个项目,并实现测试步骤:

Copy to Clipboard

断言是自动化脚本的重要组成部分。执行流程注释则可以规定脚本运行的顺序、流程:

Copy to Clipboard

NPM同时还提供了各种报告库,通过这些库可以捕获每个测试步骤的截图,一旦测试运行完成,将会自动生成HTML报告:

Copy to Clipboard

Java/Python实现

如果你不熟悉JavaScript框架和语法。可以通过引用Protractor的核心等待方法来实现Selenium WebDriver Java或Python的实例。

下面是使用Python、Selenium WebDriver、RobotFramework实现的演示代码:

Copy to Clipboard

动态等待angular 1加载完成

Copy to Clipboard

动态等待angular 2加载完成

Copy to Clipboard

结论

随着越来越多的富前端框架的出现,前端自动化测试框架也需要进行相应的增强和升级,以满足测试的需要,保证产品质量。

如果你想了解更多关于Protractor和WebDrider的使用及最佳实现,请与我们联系。