Protractor AngularJS测试框架教程
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。
本文摘自:http://www.html5jq.com/fe/angular_node/20150513/139.html
其他参考:
AngularJS体验式编程系列文章:http://blog.fens.me/series-angular/
e2e testing:https://docs.angularjs.org/guide/e2e-testingprotractor: http://www.cnblogs.com/haogj/p/4815673.html
HTML相关:http://www.w3school.com.cn/tags/tag_div.asp
Protractor AngularJS测试框架教程的更多相关文章
- AngularJS测试框架 karma备忘
AngularJS测试框架karma安装 安装karma $ --save-dev 安装karma组件 $ npm install karma-jasmine karma-chrome-launche ...
- 前端测试框架Jest系列教程 -- 简介
写在前面: 随着互联网日新月异的发展,用户对于页面的美观度,流畅度以及各方面的体验有了更高的要求,我们的网页不再是简单的承载文字,图片等简单的信息传递给用户,我们需要的是更加美观的页面展示,更快的浏览 ...
- 前端测试框架Jest系列教程 -- Asynchronous(测试异步代码)
写在前面: 在JavaScript代码中,异步运行是很常见的.当你有异步运行的代码时,Jest需要知道它测试的代码何时完成,然后才能继续进行另一个测试.Jest提供了几种方法来处理这个问题. 测试异步 ...
- 前端测试框架Jest系列教程 -- Matchers(匹配器)
写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...
- 前端测试框架Jest系列教程 -- Mock Functions
写在前面: 在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...
- 前端测试框架Jest系列教程 -- Global Functions(全局函数)
写在前面: Jest中定义了很多全局性的Function供我们使用,我们不必再去引用别的包来去实现类似的功能,下面将列举Jest中实现的全局函数. Jest Global Functions afte ...
- 前端测试框架Jest系列教程 -- Expect(验证)
写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多“Matchers”,这些“匹配器”允许您验证不同的东西. Expect 可以验证什么 Jest中 ...
- 前端测试框架Jest系列教程 -- Mock Functions(模拟器)
写在前面: 在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...
- 转载自-阮一峰-测试框架 Mocha 实例教程
测试框架 Mocha 实例教程 作者: 阮一峰 日期: 2015年12月 3日 Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏 ...
随机推荐
- 【python cookbook】【数据结构与算法】4.找到最大或最小的N个元素
问题:想在某个集合中找出最大或最小的N个元素 解决方案:heapq模块中的nlargest()和nsmallest()两个函数正是我们需要的. >>> import heapq &g ...
- Java中的BufferedReader 的readLine方法
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java ...
- 如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例
1.打开safari 2.在顶部(黑色小苹果)旁边,点击safari. 3.打开里面的 偏好设置. 4.在高级 中 找到 “在菜单栏中显示开发菜单” 并打勾. 5.关闭窗口后,可以发现safari 顶 ...
- PHP自定义函数格式化json数据怎么调用?
<?php/*** Formats a JSON string for pretty printing** @param string $json The JSON to make pretty ...
- api(接口)文档管理工具
api(接口)文档管理工具 欢迎光临:博之阅API管理平台 ,做为一个app开发者,还没有用到api管理工具,你就OUT了 点击进入:程序员精华博客大全
- 使用phpmyadmin导入SQL数据报错:#1062 - Duplicate entry '...
使用phpmyadmin导入SQL数据报错: MySQL 返回: #1062 - Duplicate entry '0' for key 'PRIMARY' 出现此错误的原因是数据的主键重复了,错误信 ...
- System.exit(0)和System.exit(1)区别:
System.exit(0)是将你的整个虚拟机里的内容都停掉了,而finish()只是退出了activity,并没有退出应用,Application还是存在于内存中的,除非被系统回收.无论如何,内存都 ...
- ACM题目————STL练习之众数问题
描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2, ...
- 【转】身份证号码校验与信息提取 - Java 代码
转载地址:http://www.w3china.org/blog/more.asp?name=lhwork&id=19148 import java.util.regex.*; /** ...
- 多校5-MZL's Border 分类: 比赛 2015-08-05 21:28 7人阅读 评论(0) 收藏
MZL's Border Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...