首页订阅

Protractor端到端的AngularJS测试框架教程

2014年01月18日 分类:教程JavaScriptAngularJS

Protractor是一个建立在WebDriverJS基础上的端到端(E2E)的AngularJS JavaScript Web应用程序测试框架。Protractor全自动化真实的模拟用户在真正的浏览器中操作、运行并测试开发者的应用程序。

安装Protractor和WebDriver

通过npm进行全局安装protractor Node.js模块:

$ npm install -g protractor@canary 或 $ sudo npm install -g protractor@canary

通过webdriver-manager安装测试驱动及服务器:

webdriver-manager update

启动Selenium测试服务器

在另一个命令行控制台启动Selenium测试服务器:

webdriver-manager start

默认情况下,Selenium测试服务器接入地址为:http://localhost:4444/wd/hub

选用Mocha测试框架

通过npm进行全局安装chai Node.js模块:

npm install -g mocha

使用chai断言库

通过npm进行全局安装mocha Node.js模块:

npm install -g chai-as-promised

使用chai-as-promised异步代码增强插件

通过npm进行全局安装mocha Node.js模块:

npm install -g chai-as-promised

配置AngularJS测试用例

本位使用以下配置通过Chrome浏览器测试AngularJS应用程序:

exports.config = {
// Selenium server 测试服务器接入地址
SeleniumAddress: 'http://localhost:4444/wd/hub', // 告知测试服务器的配置信息
capabilities: {
// 告知需要测试的浏览器类型:可以是 chrome、safari等
'browserName': 'chrome'
}, // 需要运行的测试程序代码文件列表
specs: ['angularjs-e2e-spec.js'], // 选择使用 Mocha 作为JavaScript语言的测试框架
framework: 'mocha' };

将上述配置代码保存并命名为conf.js

编写AngularJS测试程序代码

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised);
var expect = chai.expect; describe('angularjs 首页', function() {
it('应该欢迎一个具名的用户', function() {
//要求浏览器访问网址http://www.angularjs.org
browser.get('http://www.angularjs.org'); //找到ng-model名为'youname'的HTML元素,要求浏览器键入名字
element(by.model('yourName')).sendKeys('tanshuai'); var greeting = element(by.binding('yourName')); //取得结果并作断言测试
expect(greeting.getText()).to.eventually.equal('Hello tanshuai!');
}); describe('待办事项', function() {
var todoList; beforeEach(function() {
browser.get('http://www.angularjs.org'); todoList = element.all(by.repeater('todo in todos'));
}); it('应该列出待办事项列表', function() {
expect(todoList.count()).to.eventually.equal(2);
expect(todoList.get(1).getText()).to.eventually.equal('build an angular app');
}); it('应该添加一个待办事项', function() {
var addTodo = element(by.model('todoText'));
var addButton = element(by.css('[value="add"]')); addTodo.sendKeys('编写一个Protractor测试');
addButton.click(); expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).to.eventually.equal('编写一个Protractor测试');
});
});
});

将上述配置代码保存并命名为angularjs-e2e-spec.js

运行Protractor测试

运行指令:

protractor conf.js

相应的浏览器会被打开,载入网址网页完成后,即开始执行angularjs-e2e--spec.js测试程序。注意 www.angularjs.org 网站含有一些被审查的网址,因此国内载入等待较长,可能因超时导致测试失败,建议此时启用VPN连接该网站。

Protractor API应用程序接口

Protractor代码继承了WebDriver,因此任何WebDriver所具有的函数等均对Protractor有效。

WebDriver与Protractor类

  • get(string)

要求浏览器访问网址 string

关于教程

作者:tanshuai,电邮: i@tanshuai.com

为了更好的服务于开发者,本教程将会持续更新,勘误并完善内容。若发现本文的错误,建议或意见均可联系本文作者。

分享本文

TANSHUAI © 2016

 

angular 调试 js (分 karms protractor / test e2e unit )的更多相关文章

  1. Google Chrome调试js入门

    平常在开发过程中,经常会接触到前端页面.那么对于js的调试那可是家常便饭,不必多说.最近一直在用火狐的Firebug,但是不知道怎么的不好使了.网上找找说法,都说重新安装狐火浏览器就可以了,但是我安装 ...

  2. 使用Console命令调试JS

    一.console 的对象常用的方法 1.console.log(object[, object, ...])使用频率最高的一条语句:向控制台输出一条消息.支持 C 语言 printf 式的格式化输出 ...

  3. 谷歌浏览器如何调试JS

    平常在开发过程中,经常会接触到前端页面.那么对于js的调试那可是家常便饭,谷歌浏览器是常用来调试JS代码的工具,本文主要介绍如何利用谷歌浏览器来调试JS代码,协助我们进行开发工作,加快开发效率. 1. ...

  4. 【JS学习】-利用谷歌浏览器调试JS代码(转)

    谷歌浏览器是常用来调试JS代码的工具,本文主要介绍如何利用谷歌浏览器来调试JS代码,协助我们进行开发工作. 首先,打开谷歌浏览器,按快捷键F12或者ctrl+shift+j,就可以打开谷歌浏览器的开发 ...

  5. Firebug调试js代码

    Firebug功能异常强大,不仅可以调试DOM,CSS,还可以调试JS代码,下面介绍一下调试JS. 1.认识console对象 console对象是Firebug内置的对象,该对象可以在代码中写入,可 ...

  6. paip.调试js 查看元素事件以及事件断点

    paip.调试js  查看元素事件以及事件断点 ff 26 +firebug 查看不出来.. 360 ,虽然也是chrome 基础,但是开发工具烂阿,也是显示不出来.. 作者Attilax  艾龙,  ...

  7. Win8/Win7系统下用IE11浏览器调试js脚本

    作为一个web开发者,调试js脚本是工作中的一部分,但是并不是所有的浏览器都会很好的兼容js脚本的.随着win8系统的发布,ie11也慢慢进入了大家的视野,ie11的众多优点及新特性就不必多说了(全面 ...

  8. 谷歌浏览器怎么调试js

    首先我们打开开发者工具,你可以直接在页面上点击右键,然后选择审查元素或者在Chrome的工具中找到或者你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shift+J直接打开控制台) ...

  9. IE 调试JS加断点不管用 增加debugger

    ie按F12添加断点调试js不管用 有个方法在你想加断点前面加debugger,再调试就管用了

随机推荐

  1. sql优化方法

    1. SELECT子句中避免使用 “*” 当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用‘*’是一个方便的方法.不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析 ...

  2. stickUp让页面元素“固定”位置

    stickUp能让页面目标元素“固定”在浏览器窗口的顶部,即便页面在滚动,目标元素仍然能出现在设定的位置. http://www.bootcss.com/p/stickup/

  3. NGUI的localPosition和Position之间的关系

    假设有子节点为child, 父节点为parent, 且都是Transform类型. 则: child.localPosition = (child.position - parent.position ...

  4. 使用Delphi收发GMail的邮件

    GMAIL的端口和连接方式比较特殊:SMTP端口为:456POP3端口为:995都采用安全连接(SSL)这些通过Indy组件就可以实现参考代码如下: object IdConnectionInterc ...

  5. webapp图片懒加载实现

    图片懒加载在webapp上非常流行,应用的很广泛. 实现图片懒加载功能:zepto.picLazyLoad.min.js 引入类库 <script src="1.1.3/zepto.m ...

  6. Git Pro - (1) 基础

    近乎所有操作都可本地执行 在Git中的绝大多数操作都只需要访问本地文件和资源,不用连网. 三种状态 对于任何一个文件,在 Git 内都只有三 种状态:已提交(committed),已修改(modifi ...

  7. IaaS, PaaS, SaaS 解释

    IaaS.PaaS.SaaS作为云计算三种服务模式,下面会着重介绍他们的定义.作用.功能.对应产品以及他们之间的关系等. 一.定义:     SaaS:Software as a Service,软件 ...

  8. Jmeter组件8. BeanShell Sampler

    BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样 ...

  9. sublime 工具构建

    1 Sublime Text 3 配置react语法校验 原文地址:https://segmentfault.com/a/1190000004369542?_ea=585496 终端安装 npm in ...

  10. Python应用科学计算和图表绘制

    今天更新了两个python模块,一个是用于科学计算的numpy模块,另一个是用于绘图的matplotlib模块 python安装模块还是很方便的,安装了pip之后直接使用"pip insta ...