端到端测试,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中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...
随机推荐
- Remote X11 GUI for Linux/Unix
摘自:https://www.redwireservices.com/remote-x11-for-linux-unix The Problem One of my most feared quest ...
- Linux系统学习笔记(1)
学习地址:http://www.runoob.com/linux/linux-tutorial.html 1.学习Windows和Linux哪个比较难? 前期是Windows容易学习,后期是Linux ...
- 数据库sql命令
本文为转载,原文地址:http://www.cnblogs.com/cangqiongbingchen/p/4530333.html 1.说明:创建数据库CREATE DATABASE databas ...
- zabbix 一些问题随记
1. zabbix运行不了,显示被锁,去检查日志中的报错 2. 配置界面,连接不到数据库,检查server配置文件,mysql授权命令要准确,重启 3. 显示没有php文件,下载即可,或者修改网页访问 ...
- CSP201512-1: 数位之和
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...
- docker容器中启动kvm虚拟机
.安装docker yum install docker systemctl start docker.service systemctl enable docker.service .拉取cento ...
- [GraphSAGE] docker安装与程序运行
安装Docker与程序运行 1. requirements.txt Problem: Downloading https://files.pythonhosted.org/packages/69/cb ...
- BZOJ 4012 HNOI2015 开店 树的边分治+分治树
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4012 题意概述:给出一颗N点的树,保证树上所有点的度不超过3,树上每个点有权值,每条边有权 ...
- Android Studio 添加模块依赖
原文地址: http://fanjiajia.cn/2018/09/27/Android%20Studio%20%E6%B7%BB%E5%8A%A0%E6%A8%A1%E5%9D%97%E4%BE%9 ...
- java线程(6)——线程池(下)
上篇博客java线程(5)--线程池(上)介绍了线程池的基本知识,这篇博客我们介绍一下常用的ThreadPoolExecutor. 定义 类图关系: ThreadPoolExecutor继承了Abst ...