WEB UI自动化测试

我们将使用 Selenium 与 Nightwatch 搭建我们的测试脚手架。

     Selenium 是一款 Web 的自动化测试环境,它将帮我们搭建好测试环境,调取系统安装的浏览器,在浏览器里执行一切自动化行为;

    Nightwatch 是一款 Test Runner,可以简单理解为前者的控制软件,它将提供一系列接口供我们编写测试案例,同时也是与现有前端项目结合的桥梁。只需使用 Javascript 和 CSS 选择器,不需要初始化其他对象和类,您只需要编写测试规范。内置命令行测试运行器,使您能够运行整体测试,分组测试或者单个测试。

环境准备

首先要安装 Java 7 或更高 ,并且 java 命令可正常执行才能测试噢~~ 最简单的判断方法就是打开自己的终端,输入 java 并回车,看看是不是有 Java 运行。如果有命令不存在之类的提示,请重新安装 Java 运行环境 (・∀・)

Selenium 是一个直接运行在浏览器中的非常流行的综合测试工具集, 最初为Java 语言编写, 现在已经支持许多语言。

概述

总的来说,核心是使用selenium和driver操作浏览器,通过 nightwatch做断言。

安装工具

然后我们将安装 Selenium 与 Nightwatch。

安装 selenium-standalone:

      npm install selenium-standalone --save-dev

安装 Nightwatch:

              npm install nightwatch --save-dev

项目配置

一. 配置 Nightwatch

首先,在项目根目录建立文件 "nightwatch.json",这个文件用来存放 Nightwatch 的配置信息

nightwatch.json 的文件名是 不可以 修改的,因为 Nightwatch 每次启动的时候都是从它读取配置喔!这里的配置项很多,不过先不管它,我们接着创建文件。

2. 接着在项目根目录下创建文件 "nightwatch.conf.js" ,同样此文件名也是不可以修改的,因为 Nightwatch 每次启动也会从它这里读取配置喔~ (´・_・`)

3. 再次在项目根目录建立文件 "startup.js",然后在文件内部写入:

require('nightwatch/bin/runner.js')

这个文件就是我们测试的入口文件,以后我们要执行测试就要运行这个文件,命令为 node ./startup。入口文件的名字是可以按照喜好更改的,只要运行它就好啦。不过每次输入 node ./startup 太麻烦了,所以我们将这条命令写入 npm scripts 中 ~~~ 打开 "package.json",在 JSON 对象中建立 "script" 属性,并写入内容:

{

    ...

    "scripts": {

        "start": "node ./startup.js"

    },

    ...

}

二. 配置 Selenium

Selenium 是自动化测试环境,它提供了测试服务器、启动浏览器、网页自动操作等功能,同时暴露 API 给 Nightwatch 供我们使用。

1. 建立 Selenium 的配置信息。

在项目根目录下建立文件夹 "build",并在其中创建文件 "selenium-conf.js"

2. 告诉 Nightwatch,我的 Selenium 与 Driver 在哪里。

再次打开项目根目录下的 "nightwatch.conf.js" 文件

创建目录存放测试用例

在项目根目录新建一个名为 "tests" 的目录,然后这里就用来存放我们即将编写的测试用例文件。

那么这个文件夹能不能指向到其他地方去呢?当然可以,不过要修改一个小地方。

您可以在目录中存放多个测试用例文件,且命名随意,Nightwatch 将读取目录中所有的 JS 文件,如果符合测试用例格式,将会自动执行。

>

| -- build|      | -- selenium-conf.js        # Selenium 版本信息配置。|      | -- selenium-setup.js      # Selenium 安装命令脚本。|      | -- selenium-start.js      # Selenium 启动命令脚本。| -- reports        #输出测试报告

| -- tests        #测试用例| -- nightwatch.conf.js            # Nightwatch 动态配置文件。| -- nightwatch.json                # Nightwatch 配置文件。| -- package.json                  # 项目信息配置文件。| -- startup.js                    # 测试启动入口文件。

基本api

http://nightwatchjs.org/api

client 是代码运行时 Nightwatch 提供的对象,所有对浏览器进行的操作都将使用此对象调取,比如 client.click("CSS Selector")、client.getCookie(function () {...}),我们第一章说过的 "可以简单理解为 Selenium 的控制软件" 就是通过它体现的喔!

Expect是0.7版本的时候引入的一种BDD(行为驱动测试)风格的接口,也是为了执行断言,使用链式的语法,和直接的断言相比,expect读起来更加语义化,就像写句子(但是单词之间用的.连接的)

Assert这部分包含两套有同样方法的方法库:assert和verify,其中,若是当前执行的断言没有成功,assert会停止执行剩余的断言并立即结束,verify会打印错误日志然后继续淡定的执行接下来的断言。

Commands用来在页面上执行一些命令比如点击、关掉当前窗口、清除cookie、获取到某元素的值等。

禁用测试

要阻止某个模块执行测试, 只需要设置 disable 属性为true :

module.exports = {

  '@disabled': true, // This will prevent the test module from running.

  'sample test': function (client) {

    // test code

  }

};

禁用单独测试用例 

禁用模块中单独的测试用例,目前还不支持。 但是有一个变通方法, 将测试方法转化为字符串,Nightwatch 就会忽略它。

module.exports = {

'sample test': ''+function (client) {

    // test code

  }

};

当你想要停止测试时注意总是要调用 end() 方法,如此 selenium 会话才会正确的停止。

Nightwatch 为测试提供了 before/after, beforeEach/afterEach 钩子。 

before 和 after 钩子会在每个测试套件运行前后执行。beforeEach 和 afterEach 则会在每个测试用例(测试步骤)执行前后执行。 

所有钩子函数都接收一个 NightWatch 实例做为参数。 

Example:

before(), beforeEach(), “step one”, afterEach(), beforeEach(), “step two”, afterEach(), after()

你可能感兴趣的:(WEB UI自动化测试)