之前我们介绍了如何测试某段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测试的教程的更多相关文章

  1. 最受欢迎的5款Node.js端到端测试框架

    测试,尤其是自动化测试在现代 WEB 工程中有着非常重要的角色,与交付过程集成良好的自动化测试流程可以在新版发布时帮你快速回归产品功能,也可以充当产品文档.测试因粒度不同又可以分为单元测试.接口测试. ...

  2. 端到端测试工具--testcafe

    写在前面 随着业务的增加,复杂性的增加,我们更需要保证页面不能出错,之前需要每次上线之前需要每次人工测试,如果有好多改动,为保证业务不出错,需要耗费更多的时间来测试,所以我们需要写一些测试来保证业务的 ...

  3. 脚手架vue-cli系列五:基于Nightwatch的端到端测试环境

    不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试 ...

  4. cypress 端到端测试框架试用

    cypress 包含的特性 端到端测试 集成测试 单元测试 安装 yarn add cypress --dev 运行测试项目 初始化项目 yarn init -y 安装cypress yarn add ...

  5. 前端端对端测试:基于PhantomJS的CasperJS

    简介 Casperjs是一个基于PhantomJS和SlimerJS的前端端对端测试框架,当然你也可以使用它完成网络爬虫功能,它的特点的通过简单的脚本模拟浏览器行为, 主要有casper.tester ...

  6. Cypress与TestCafe WebUI端到端测试框架简介

    近期接触了Cypress和TestCafe,两个测试框架都基于Node.js,都不再使用Selenium+WebDriver,而且开箱即用,非常轻量级,就冲着不再使用WebDriver这一点,极大地勾 ...

  7. 前端测试框架Jest系列教程 -- 简介

    写在前面: 随着互联网日新月异的发展,用户对于页面的美观度,流畅度以及各方面的体验有了更高的要求,我们的网页不再是简单的承载文字,图片等简单的信息传递给用户,我们需要的是更加美观的页面展示,更快的浏览 ...

  8. 前端测试框架Jest系列教程 -- Asynchronous(测试异步代码)

    写在前面: 在JavaScript代码中,异步运行是很常见的.当你有异步运行的代码时,Jest需要知道它测试的代码何时完成,然后才能继续进行另一个测试.Jest提供了几种方法来处理这个问题. 测试异步 ...

  9. 前端测试框架Jest系列教程 -- Matchers(匹配器)

    写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...

  10. 前端测试框架Jest系列教程 -- Mock Functions

    写在前面: 在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...

随机推荐

  1. NoSQL简单学习(一)

    只是简单的知道有这个东西,却从来没有去接触,今天看了几篇文章,记录一下,开始慢慢接触这一领域 简介: 8种Nosql数据库系统对比 http://blog.jobbole.com/1344/ 一网打尽 ...

  2. jmeter常用的内置变量

    1. vars   API:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html vars.get(& ...

  3. 【廖雪峰老师python教程】——filter/sorted

    filter Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然 ...

  4. 最小总代价 状压DP

    描述 n个人在做传递物品的游戏,编号为1-n. 游戏规则是这样的:开始时物品可以在任意一人手上,他可把物品传递给其他人中的任意一位:下一个人可以传递给未接过物品的任意一人. 即物品只能经过同一个人一次 ...

  5. jmeter-maven-plugin

    Maven编译JMeter, 使用的是jmeter-maven-plugin插件: <?xml version="1.0" encoding="UTF-8" ...

  6. 《python核心编程第二版》第8章习题

    8–1. 条件语句. 请看下边的代码 # statement Aif x > 0:# statement Bpasselif x < 0:# statement Cpasselse:# s ...

  7. 【java并发编程实战】第七章:取消与关闭

    停止线程的几种方式 一般的逻辑停止 public class ThreadInterruptTest { public static volatile boolean cancel = true; p ...

  8. HDFS伪分布式

    (一).HDFS shell操作 以上已经介绍了如何搭建伪分布式的Hadoop,既然环境已经搭建起来了,那要怎么去操作呢?这就是本节将要介绍的内容: HDFS自带有一些shell命令,通过这些命令我们 ...

  9. Spark实战练习03--Pair RDD

    一.场景 现有某网站的网站日志,内容为用户对网站的请求,包含user ID.IP address.datetime……等等 另有一份文件中包含用户的账户详细信息数据,包含User ID.creatio ...

  10. STL中的set容器的一点总结2

    http://blog.csdn.net/sunshinewave/article/details/8068326 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像 ...