protractor是一个非常优秀的测试框架,跨平台,跨浏览器,UI测试,接口测试,单元测试,都可以用它来完成。
protractor现在已经到了4.0.11,我觉得有必要梳理一下各个版本新增的功能以及各种依赖的变化。一方面可以了解protractor提供的新功能有哪些,及时使用新功能,减少工作量。另一方面也可以避免一些因配置环境导致的问题。
Protractor Versions(0.x 为原始开发版本)
添加ignoreSynchronization属性,可以关闭protractor等待Angular的动作。
这里是一个坑,在执行case之前必须要设置这个属性。 beforeEach(function () {browser.ignoreSynchronization = true;}); 否则就会报错:’angular can not be found on the page’
为waitForAngular超时错误添加新的错误信息。将默认超时时间从100秒改为11秒。
如果需要修改默认超时时间,需要driver.manage().timeouts().setScriptTimeout()
添加登录的例子
添加onPrepare回调函数。 onPrepare是一个很实用的功能,这样就可以在执行测试用例之前完成一些准备工作。比如:登录,设置参数等待。允许直接传参给测试用例。添加参数对象params,它可以通过命令行直接将参数传递给protractor。
example: –params.login.user ‘Joe’ –params.login.password ‘abc’
-添加元素定位符:$和 $$
$=element(by.css()); $$=element.all(by.css());
重写了安装运行selenium和webdriver的脚本。
webdriver-manager update 将下载最新的webdriver,包括IE driver。 webdriver-manager start 将启动selenium-standalone-server。
如果未指定selenium和webdriver,将使用默认路径。
config.js中的所有路径都是相对于自身的相对路径。升级依赖包minijasminenode至0.2.6。
升级后框架能够识别iit和ddescribe。通过这两个可以控制测试用例的运行。
默认情况下将webdriver信息从堆栈信息中移除来提高可读性。by.model可用,可以定位选择菜单和textareas。ignoreSynchronization可以影响browser.get。element.all声明了each方法。 element.all(by.model(‘foo’)).each(function(webElement) { // Do stuff with webElement. }); by.repeat支持多个ng-repeat(ng-repeat-start,ng-repeat-end)。webdriver-manager添加命令指定selenium 端口。
$ webdriver-manager start –seleniumPort 4443
-支持元素链定位元素,在最后一个元素调用其他方法之前,任何方法都不会执行。
var elem = element(by.id(‘outer’)).element(by.css(‘inner’));
-添加回调函数onCleanUp能够在所有用例执行完后被触发。
-为element.all添加map()方法。
-允许使用coffeescript的配置文件。
-添加两个定位器:by.buttonText, by.partialButtonText
-允许使用livescript配置文件
-增加browser.get()的超时时间。
-允许多个runner。
-添加removeMockModule方法
-添加转换器用于cucumber.js
-升级selenium至2.40.0和下载地址
-允许自定义jasmine匹配器
-允许在cucumber测试中使用多个标签。
-控制台输出浏览器汇总信息
-允许定义多个测试集并通过命令行分开运行
-顺序展示错误的堆栈信息和方法失败的细节