之前我们介绍了如何测试某段js代码的逻辑是否正确,考虑的情况是否全面,但是在ui界面上我们每次做好的功能都要自己去填写内容,点击按钮等,那么是否存在自动化测试的工具呢,让这些事情可以自动完成,答案是肯定的,今天我们就来讲解如何自动测试我们界面上的功能。

1.安装依赖文件

  在任意的地方创建新的文件夹,例如test,进入到文件夹里,打开命令行或者gitbash;

  <1>安装protractor

  1. npm install -g protractor

  <2>安装karma-jasmine

  1. npm install --save-dev karma-jasmine

  <3>webdriver-manager 驱动

  1. 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

  1. describe("测试加法", function () {//describe就是对这次测试的整体描述,如:加法测试
  2. it("3+5=8", function () {//it是对个测试的描述,如:3+5应该等于8
  3. expect(add(3, 5)).toEqual(8);//期待add(3,5)的结果等于8
  4. });
  5. });

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

  1. exports.config = {
  2. directConnect: true,
  3. capabilities: {
  4. 'browserName': 'chrome',
  5. },
  6. specs: ['applications-test.js'], //运行的测试文件地址
  7. //framework: 'jasmine2',
  8. jasmineNodeOpts: {
  9. showColors: true,
  10. defaultTimeoutInterval: 30000
  11. },
  12. //输出测试报告
  13. //onPrepare: function(){
  14. // jasmine.getEnv().addReporter(
  15. // new Jasmine2HtmlReporter({
  16. // savePath: 'e2e/',
  17. // takeScreenshots: true, //是否截屏
  18. // takeScreenshotsOnlyOnFailures: true //测试用例执行失败时才截屏
  19. // })
  20. // );
  21. //}
  22. };

5.编写的测试代码

  1. describe(" checkoutLogin", function() {
  2. it('进入登入界面',function(){
  3. browser.get("http://localhost:106/#/login");//首先进入到这个网址
  4. })
  5.  
  6. it('登入',function(){
  7. 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

  1. webdriver-manager start

  <2>启动测试代码  当前文件夹下打开另一个cmd命令行或者gitbash

  1. 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. 如何搭建SBT编译Scala开发的Android工程

    作者:戚明峰 最近接触了shadowsocks的Android客户端项目源码(https://github.com/shadowsocks/shadowsocks-android),刚好这个项目是使用 ...

  2. MySQL训练营01

    一.数据库基础知识: 1. 数据库(database):保存有组织的数据的容器(通常是一个或者一组文件) 2. 数据库管理系统(DBMS):数据库软件,外界通过DBMS来创建和操纵数据库,具体是什么, ...

  3. php+Mysql中网页出现乱码的解决办法详解

    $conn = mysql_connect("$host","$user","$password");mysql_query("S ...

  4. linux下easy_install的安装与使用详解

    Python中的easy_install工具用起来非常好用,它的作用类似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan. 1.easy_install安装 如果想使用easy_ ...

  5. LTE QOS

    http://wenku.baidu.com/link?url=ziFIkdKaC7MU2RY-bTOp2bt87WFPw5_02bqmYs5W6w4ktOfPHEcWesK1U2T7YiyXjVSM ...

  6. 漫谈单点登录(SSO)

    1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是,从简单到复杂,各式各样应有尽有!开 ...

  7. 多个jar包的合并

    1.将所有jar文件复制至某临时目录中,通过jar命令解压得到所有的.class文件 > jar -xvf xx.jar xx.jar必须为具体的jar,不能为*.jar,会报FileNotFo ...

  8. Anaconda使用入门

    简介 Conda是一个开源的包.环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换 Anaconda包括Conda.Python以及一大堆安装好的工具包,比如: ...

  9. 详细介绍javascript中的几种for循环的区别

    偶然间见到了forEach循环,感觉很新奇,就研究了一下,顺带着把js中的几种for循环做了一个比较. 首先,简单说一下,js中一共大概有四种for循环:(1).那种简单常见的for循环:(2).fo ...

  10. Storm之详解spout、blot

    1.Topology的构造backtype.storm.topology.TopologyBuilder 2.Spout组件的编写实现接口 backtype.storm.topology.IRichS ...