什么是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()等。
这个全局函数有助于减少元素定位语法:
3) 新增的定位策略
Protractor额外添加了一些新的定位器策略和功能,以帮助定位AngularJS元素:By.binding, By.repeater, By.textarea, By.model, WebElement.all, WebElement.evaluate。
使用说明
因为Protractor是使用Node.js实现的,所以需要安装Node.js,安装命令如下:
还需要安装Selenium服务器和ChromeDriver。使用以下命令:
现在,可以初始化第一个项目,并实现测试步骤:
断言是自动化脚本的重要组成部分。执行流程注释则可以规定脚本运行的顺序、流程:
NPM同时还提供了各种报告库,通过这些库可以捕获每个测试步骤的截图,一旦测试运行完成,将会自动生成HTML报告:
Java/Python实现
如果你不熟悉JavaScript框架和语法。可以通过引用Protractor的核心等待方法来实现Selenium WebDriver Java或Python的实例。
下面是使用Python、Selenium WebDriver、RobotFramework实现的演示代码:
动态等待angular 1加载完成
动态等待angular 2加载完成
结论
随着越来越多的富前端框架的出现,前端自动化测试框架也需要进行相应的增强和升级,以满足测试的需要,保证产品质量。
如果你想了解更多关于Protractor和WebDrider的使用及最佳实现,请与我们联系。