端到端测试,protractor测试的教程
之前我们介绍了如何测试某段js代码的逻辑是否正确,考虑的情况是否全面,但是在ui界面上我们每次做好的功能都要自己去填写内容,点击按钮等,那么是否存在自动化测试的工具呢,让这些事情可以自动完成,答案是肯定的,今天我们就来讲解如何自动测试我们界面上的功能。
1.安装依赖文件
在任意的地方创建新的文件夹,例如test,进入到文件夹里,打开命令行或者gitbash;
<1>安装protractor
npm install -g protractor
<2>安装karma-jasmine
npm install --save-dev karma-jasmine
<3>webdriver-manager 驱动
webdriver-manager update //浏览器的驱动
<4>安装javaJDK
由于运行的时候需要java环境,所以需要安装javaJDK,http://blog.csdn.net/bingiser/article/details/53375282,这个网址很详细的介绍了如何一步一步安装javaJDK。
2.简单介绍karma-jasmine的语法
由于之前的单元测试介绍过karma-jasmine,所以这里简单介绍,如果有人没看过,去这里看 ,http://www.cnblogs.com/zhenfei-jiang/p/7027948.html。
describe("测试加法", function () {//describe就是对这次测试的整体描述,如:加法测试
it("3+5=8", function () {//it是对个测试的描述,如:3+5应该等于8
expect(add(3, 5)).toEqual(8);//期待add(3,5)的结果等于8
});
});
3.介绍几个常用的protractor api 具体的api去网站 http://www.protractortest.org/#/api,需要翻墙。
1. browser.get('http://baidu.com')导航到当前页面
2. element找到元素
3. element.all找到元素集合
4. by 查找元素
* by.binding : ng-bind, {{}}
* by.model : ng-model //例子:element(by.model('name')).sendKeys('haha'),就是找到含有ng-model="name"的输入框然后填写haha;
* by.repeater : ng-repeater
* by.id : id选择器 //id选择器
* by.css : css选择器
* Array.get(2) : 选择第2个 //获取元素的第二个,因为可能某种选择器会得到很多的元素
5. click 点击事件 //element(by.cssContainingText("button","OK")).click(),选择button的内容是OK的按钮点击
6. sendKeys 书写内容
7. 获取信息,判断
* getText 获取文本
* getSize 获取尺寸
* getAttribute 获取属性
8. getTitle
9. sleep
10. brower.wait()等待某元素出现 //这个常用的是跳转页面的时候要等待下一个页面某个元素出来才可以操作
4.编写你的protractor_conf.js
exports.config = {
directConnect: true,
capabilities: {
'browserName': 'chrome',
},
specs: ['applications-test.js'], //运行的测试文件地址
//framework: 'jasmine2',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
},
//输出测试报告
//onPrepare: function(){
// jasmine.getEnv().addReporter(
// new Jasmine2HtmlReporter({
// savePath: 'e2e/',
// takeScreenshots: true, //是否截屏
// takeScreenshotsOnlyOnFailures: true //测试用例执行失败时才截屏
// })
// );
//}
};
5.编写的测试代码
describe(" checkoutLogin", function() {
it('进入登入界面',function(){
browser.get("http://localhost:106/#/login");//首先进入到这个网址
}) it('登入',function(){
browser.wait(function () {//然后等待这个网页出现了ng-model="form.password"这个选择器,再执行其他的操作
return browser.isElementPresent(by.model("form.password"));//直到这个选择器的元素存在的时候
}, 2000);
element(by.model("form.username")).sendKeys("admin")//给ng-model="form.username"填写admin
element(by.model("form.password")).sendKeys("admin") //给ng-model="form.password"填写admin
element(by.css("input.loginbtn")).click() //点击登入这个按钮
})
})
6.启动命令
<1>启动浏览器驱动 当前文件夹下打开cmd命令行或者gitbash
webdriver-manager start
<2>启动测试代码 当前文件夹下打开另一个cmd命令行或者gitbash
protractpr protractor_conf.js
就可以看到自动会启动一个页面,跳转到你测试代码的地址,进行你一系列的操作。
7.踩过的坑
<1>最好在你的protractor_conf.js的 browserName填写“chrome”,因为火狐的浏览器(firefox)可能存在报错的问题,并且你的chrome的版本需要高于58。
<2>你的页面假设有透明的地方可能会遮住你的按钮,那么会导致你的按钮点击不到报错
端到端测试,protractor测试的教程的更多相关文章
- 最受欢迎的5款Node.js端到端测试框架
测试,尤其是自动化测试在现代 WEB 工程中有着非常重要的角色,与交付过程集成良好的自动化测试流程可以在新版发布时帮你快速回归产品功能,也可以充当产品文档.测试因粒度不同又可以分为单元测试.接口测试. ...
- 端到端测试工具--testcafe
写在前面 随着业务的增加,复杂性的增加,我们更需要保证页面不能出错,之前需要每次上线之前需要每次人工测试,如果有好多改动,为保证业务不出错,需要耗费更多的时间来测试,所以我们需要写一些测试来保证业务的 ...
- 脚手架vue-cli系列五:基于Nightwatch的端到端测试环境
不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试 ...
- cypress 端到端测试框架试用
cypress 包含的特性 端到端测试 集成测试 单元测试 安装 yarn add cypress --dev 运行测试项目 初始化项目 yarn init -y 安装cypress yarn add ...
- 前端端对端测试:基于PhantomJS的CasperJS
简介 Casperjs是一个基于PhantomJS和SlimerJS的前端端对端测试框架,当然你也可以使用它完成网络爬虫功能,它的特点的通过简单的脚本模拟浏览器行为, 主要有casper.tester ...
- Cypress与TestCafe WebUI端到端测试框架简介
近期接触了Cypress和TestCafe,两个测试框架都基于Node.js,都不再使用Selenium+WebDriver,而且开箱即用,非常轻量级,就冲着不再使用WebDriver这一点,极大地勾 ...
- 前端测试框架Jest系列教程 -- 简介
写在前面: 随着互联网日新月异的发展,用户对于页面的美观度,流畅度以及各方面的体验有了更高的要求,我们的网页不再是简单的承载文字,图片等简单的信息传递给用户,我们需要的是更加美观的页面展示,更快的浏览 ...
- 前端测试框架Jest系列教程 -- Asynchronous(测试异步代码)
写在前面: 在JavaScript代码中,异步运行是很常见的.当你有异步运行的代码时,Jest需要知道它测试的代码何时完成,然后才能继续进行另一个测试.Jest提供了几种方法来处理这个问题. 测试异步 ...
- 前端测试框架Jest系列教程 -- Matchers(匹配器)
写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...
- 前端测试框架Jest系列教程 -- Mock Functions
写在前面: 在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...
随机推荐
- 【jQuery】 js 对象
[jQuery] js 对象 一. 创建对象的三种方式 <script> var v1 = new Object(); v1.name = "name1"; v1.a ...
- 通过repcached实现memcached主从复制
一.环境 服务器A:ubuntu server 12.04(192.168.1.111) 服务器B:ubuntu server 12.04 (47.50.13.111) 二.memcached安装 s ...
- facebook hash key
private void printHashKey() { try { PackageInfo info = getPackageManager().getPackageInfo( "xxx ...
- 【APUE】Chapter14 Advanced I/O
14.1 Introduction 这一章介绍的内容主要有nonblocking I/O, record locking, I/O multiplexing, asynchronous I/O, th ...
- CWindowWnd类源码分析
CWindowWnd代码在UIBase.h和UIBase.cpp文件里.主要实现的是一个基本窗口的创建与消息处理. 相关代码: 头文件: class UILIB_API CWindowWnd { pu ...
- spring 读取properties文件--通过注解方式
问题: 需要通过properties读取页面的所需楼盘的名称.为了以后便于修改. 解决: 可以通过spring的 PropertiesFactoryBean 读取properties属性,就不需要自己 ...
- Ubuntu16.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook 深度学习环境配置
目录 一.Ubuntu16.04 LTS系统的安装 二.设置软件源的国内镜像 1. 设置方法 2.关于ubuntu镜像的小知识 三.Nvidia显卡驱动的安装 1. 首先查看显卡型号和推荐的显卡驱动 ...
- 【Dataset】Goodbooks-10k: 图书推荐数据
当前推荐领域一些公开的据集都是关于电影和音乐的(比如Netflix.Movielens等),没有关于图书推荐的数据.本文将要介绍的就是一份用于图书推荐的数据集,该数据来源于goodreads网站,包含 ...
- Java——异常博客作业
本次任务地址 6. 为如下代码加上异常处理 6.1 改正代码,并增加如下功能.当找不到文件时,需提示用户找不到文件xxx,请重新输入文件名,然后尝试重新打开. 如果是其他异常则提示打开或读取文件失败! ...
- fork开源代码后如何基于某个tag建立自己的branch
应用场景: 在github上fork一个自己想看的开源项目,想基于某个tag来写一些测试demo,然后可以做到版本控制. 方法: //克隆 git clone xxxxx.git //查看tag gi ...