nightwatch-前端自动化测试工具安装

最近再弄这个前端自动化测试工具,刚开始弄了几天,目前为止遇到很多坑,光是安装就费了不少时间,记录一下,以便自己忘记。

这里是它的官网,目前没找到中文版的官网,全英文,对我这个英语渣来说有点难理解。

一、前言

参考:首先本文主要是参照这篇文章,并加上自己的理解,大家可以看看。

涉及知识:1.一些js知识(本文需要的不是太多);2.nodejs。

基础环境:1.java:java7以上,可以去官网下载;2.nodejs,版本没限制,没有安装过就直接去官网下载就可以了。3.编辑器(我用的vscode,比较小巧)4.chrome浏览器(平时调试什么的还是喜欢chrome,firefox有些样式不喜欢)

安装的时候就是一直点下一步就可以了(我是这么点的,因为也不知道那些重要,干脆就都要吧)。

查看版本命令:java是 java -version;nodejs是 node -v;

二、搭建项目

1.建立项目

首先创建个文件夹,比如我在F盘创建个nwDemo文件夹,然后输入

npm init -y

然后就创建了一个package.json 的配置文件。

2.安装 Selenium 与 Nightwatch

首先说明下,我们安装 Selenium是用selenium-standalone来配置的。

1.所以要先安装selenium-standalone。

npm install selenium-standalone --save-dev

2.安装nightwatch

npm install nightwatch --save-dev

3.项目配置

1.配置nightwatch

项目文件夹创建nightwatch.json文件,并写下一下内容:

{
     "src_folders": ["tests"],
     "output_folder": "reports",
     "custom_commands_path": "",
     "custom_assertions_path": "",
     "page_objects_path": "",
     "globals_path": "",

     "selenium": {
       "start_process": true,
       "server_path": "",
       "log_path": "",
       "host": "127.0.0.1",
       "port": 4444,
       "cli_args": {
         "webdriver.chrome.driver": ""
       }
     },

     "test_settings": {
       "default": {
         "launch_url": "http://localhost",
         "selenium_port": 4444,
         "selenium_host": "localhost",
         "silent": true,
         "screenshots": {
           "enabled": false,
           "path": ""
         },
         "desiredCapabilities": {
           "browserName": "chrome",
           "javascriptEnabled": true,
           "acceptSslCerts": true
         }
       },

       "chrome" : {
         "desiredCapabilities": {
           "browserName": "chrome",
           "javascriptEnabled": true,
           "acceptSslCerts": true
         }
       }
     }
}

这些都是一些配置,可以暂时不用理解,如果想知道详细配置,点这里查看,全英文哦。

2.接着创建nightwatch.conf.js文件,并写下:

const seleniumConfig = require(‘./build/selenium-conf‘)
const path = require(‘path‘)

module.exports = (function (settings) {
  // 告诉 Nightwatch 我的 Selenium 在哪里。
  settings.selenium.server_path = `${path.resolve()}/node_modules/selenium-standalone/.selenium/selenium-server/${seleniumConfig.selenium.version}-server.jar`

// 设置 Chrome Driver, 让 Selenium 有打开 Chrome 浏览器的能力。
  settings.selenium.cli_args[‘webdriver.chrome.driver‘] = `${path.resolve()}/node_modules/selenium-standalone/.selenium/chromedriver/${seleniumConfig.driver.chrome.version}-${seleniumConfig.driver.chrome.arch}-chromedriver`

    return settings;
})(require(‘./nightwatch.json‘))
/*
 *  Nightwatch 会从 nightwatch.json 中读取配置。
 *  不过如果存在 nightwatch.conf.js,将会变为首先从后者中读取配置。
 *  nightwatch.conf.js 存在的意义是使用 JavaScript 动态生成配置信息。
 *  如果配置信息是不需要代码修改的,直接使用 nightwatch.json 就可以啦。
 */

以上两个都是基础配置,文件名不能修改哦。

3.配置 Selenium

1.创建文件 "selenium-conf.js"

不知道大家发现没有,上面创建nightwatch.conf.js的的时候,里面第一行我们引用了一个selenium-cong文件,这个就是安装selenium的一个配置文件。

在nwDemo文件夹里创建build文件夹,并添加一个selenium-cong.js文件,写下:

const process = require(‘process‘)

module.exports = {
    // Selenium 的版本配置信息。请在下方链接查询最新版本。升级版本只需修改版本号即可。
    // https://selenium-release.storage.googleapis.com/index.html
    selenium: {
        version: ‘2.53.1‘,
        baseURL: ‘https://selenium-release.storage.googleapis.com‘
    },

    // Driver 用来启动系统中安装的浏览器,Selenium 默认使用 Firefox,如果不需要使用其他浏览器,则不需要额外安装 Driver。
    // 在此我们安装 Chrome 的 driver 以便使用 Chrome 进行测试。
    driver: {
        chrome: {
            // Chrome 浏览器启动 Driver,请在下方链接查询最新版本。
            // https://chromedriver.storage.googleapis.com/index.html
            version: ‘2.22‘,
            arch: process.arch,
            baseURL: ‘https://chromedriver.storage.googleapis.com‘
        }
    }
} 

2.建立 Selenium 安装脚本,一键安装 Selenium。

上面我们已经安装过selenium-standalone这个工具了,接下来我们就要用它来安装Selenium。

在上一步创建的build文件夹里接着创建selenium-setup.js,并写下

const selenium = require(‘selenium-standalone‘)
const seleniumConfig = require(‘./selenium-conf.js‘)

selenium.install({
    version: seleniumConfig.selenium.version,
    baseURL: seleniumConfig.selenium.baseURL,
    drivers: seleniumConfig.driver,
    logger: function (message) { console.log(message) },
    progressCb: function (totalLength, progressLength, chunkLength) {}
}, function (err) {
    if (err) throw new Error(`Selenium 安装错误: ${err}`)
    console.log(‘Selenium 安装完成.‘)
})

为了方便,我们把安装命令写到package.json里,把下面这段命令写到package.json的scripts里:

"selenium-setup": "node ./build/selenium-setup.js"

3.安装Selenium

执行 下面命令安装 Selenium

npm run selenium-setup 

3.1.安装问题

在这一步安装时经常会遇到一些问题,下面就是我遇到的问题

首先是selenium-server-standalone-2.53.1.jar安装不上。

两种解决方法:

方法一:去这个 https://selenium-release.storage.googleapis.com/index.html 网址查看最新的版本,我查找的是3.9,把selenium-conf.js里的selenium的version改成3.9,然后再次执行 npm run selenium-setup 命令。

方法二:按着ctrl去这个网址下载这个文件,手动放到它该在位置。

它应该在的位置是:你的项目文件夹\node_modules\selenium-standalone\.selenium\selenium-server

第二个问题安装chromedriver失败了,

同样的解决办法有两种。

方法一:首先我们要先知道自己的chrome要用那个版本的,先去点击 https://chromedriver.storage.googleapis.com/index.html 网址,然后找到LATEST_RELEASE这个文件夹,点击查看适配自己浏览器的版本,我的是2.41,所以把selenium-conf.js里的chrome的version改成2.41。然后再次执行 npm run selenium-setup 命令。

方法二:同样的,跟上面的的方法一样,直接下载,然后放在相应的位置:你的项目文件夹\node_modules\selenium-standalone\.selenium\chromedriver

完成上面的操作后再次执行 npm run selenium-setup 命令看看是否有错误

备注:我用的这个编译器似乎有问题,有时候明明下载下来了,但是识别不了,重启下编译器试试,有可能就成功了;可能执行命令后还是报错,但是你只要看到你的.selenium文件夹和下图一样就不用管了,看接下来的操作就可以。

4.建立启动文件

在项目目录中建立startup.js文件,并写下一下代码:

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

这是启动命令,我们只需要在控制台输入 node ./startup 就可以执行,但是我建议用npm命令来执行,所以打开package.json文件,在scripts里添加:

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

以后要开启测试的时候就直接输入 npm start 命令就可以了

5.建立测试文件

在项目文件夹里创建 tests 文件夹,并创建一个 tests.js 文件。(注意这里的test文件夹对应的是nightwatch.json文件里的第一项:"src_folders": ["tests"],顾名思义就是放测试文件的文件夹名称)

这里我要让它执行一个 打开浏览器并登陆bing网站,搜索 "what is microsoft",然后保存成截图后退出 的操作。

在 tests.js 写下:

module.exports = {
    ‘Find the answer.‘: function (client) {
      // 定义 Bing 页面中的节点.
      const searchInput = ‘#sb_form_q‘
      const searchBtn = ‘#sb_form_go‘
      const question = ‘what is microsoft‘

      // 启动浏览器并打开 bing.com.
      client.url(‘http://bing.com‘).maximizeWindow()

      // 确保 "body" 和输入框可以使用.
      client.expect.element(‘body‘).to.be.present
      client.expect.element(searchInput).to.be.visible
      client.pause(2000)  // 稍等两秒.

      // 输入 "what is microsoft" 然后搜索.
      client.setValue(searchInput, question)
      client.click(searchBtn)
      client.pause(2000)

      // 截一张图然后保存到 "reports/answer.png".
      client.expect.element(‘body‘).to.be.present
      client.saveScreenshot(‘reports/answers.png‘)
      client.end()
    }
  }

6.开始测试

控制台执行命令:

npm start

然后就大功告成了!

至于tests.js里的具体那些命令,还是要到官网去看,本文知识粗略的介绍一些nightwatch的安装过程,现在还在摸索怎么编写文档,因为这里的坑好多啊,比如我们的页面有iframe,找iframe里的标签找不到这种问题,等我解决了在写一篇怎么编写测试文件的文章吧。

后记:

今天正好看到奇舞周刊公众号推送了一篇文章:vue-cli 自动化测试 Nightwatch 详解,也是讲nightwatch的,很不错,大家可以看看,是关于vue里的nightwatch测试的。话说现在的三大框架我都不会,真的有些落伍了,得赶紧去补补了...

原文地址:https://www.cnblogs.com/silinpper/p/9551846.html

时间: 2024-08-24 23:14:36

nightwatch-前端自动化测试工具安装的相关文章

前端自动化测试工具doh学习总结(二)

一.robot简介 robot是dojo框架中用来进行前端自动化测试的工具,doh主要目的在于单元测试,而robot可以用来模仿用户操作来测试UI.总所周知,Selenium也是一款比较流行的前端自动化测试工具,与Selenium相比robot的优点在于robot触发的浏览器事件是真正的用户操作事件,而Selenium中的事件属于"合成事件".打个比方,用户在一个textbox元素上触发了mousedown事件,但是在触发mousedown事件之前,肯定会触发mouseover等事件.

前端自动化工具 grunt 插件的简单使用(一)

Grunt 的简介: Grunt 是一套前端自动化工具,是一个基于 node.js 的命令行工具,它一般用于: 1.压缩文件: 2.合并文件: 3.简单的语法检测: 4.监听文件变动: 5.less 编译: PS:Grunt 官网 (https://gruntjs.com/).Grunt  就像是一个工具箱,拥有非常丰富的任务插件,可以帮助开发人员实现各种各样目标任务的构建.在Grunt工具箱中,按目标任务类型我们可以分为: 1.编译文档型:比如编译 LESS.Sass.Stylus.Coffe

WebDriver自动化测试工具(1)---C#环境搭建

Webdriver是一个前端自动化测试工具,可以模拟用户点击链接,填写表单,点击按钮等操作,下面介绍其使用 一.下载WebdriverC#类库以及对应浏览器驱动 http://www.seleniumhq.org/download/ 也可以通过Nuget去下载,不过国内防火墙的问题,一般下载不来,所以还是使用上述方法比较稳 这里只演示谷歌,其他浏览器操作类次 二.在项目中引用下载的DLL,chromedriver.exe可以把其放在项目根路径,然后属性里设置始终复制即可 三.做一个Demo,让浏

用Docker安装Web前端性能测试工具YellowLabTools

一.YellowLabTools概述 1.YellowLabTools简介 Yellow Lab Tools:是一款开源的Web前端性能测试工具,具有一些在其他工具上无法看到的独特功能,如页面加载时,JavaScript与DOM互动和其他程序代码验证问题. Yellow Lab Tools 偏向于一个发现不良实践的工具,会综合页面权重.请求数.DOM.错误的Javascript.错误的CSS等方面取得一个综合评分.并显示出在加载页面的过程中,DOM 是如何相互影响. 2.YellowLabToo

前端构建工具之gulp的安装和配置

在选择构建工具时,看到更多人推荐gulp,从此入了gulp的坑- 一.安装node环境 百度谷歌一下就有了,在终端中分别输入 node -v 和 npm -v,若显示node和npm的版本号则说明node环境装好了. 二.安装gulp linux下安装全局环境: sudo npm install -g gulp 或cd进入项目目录下安装gulp到项目本地: npm install gulp --save-dev --save-dev的意思是将安装的gulp版本信息写入package.json,更

前端单元测试工具

单元测试Unit Test 很早就知道单元测试这样一个概念,但直到几个月前,我真正开始接触和使用它.究竟什么是单元测试?我想也许很多使用了很久的人也不一定能描述的十分清楚,所以写了这篇文章来尝试描述它的特征和原则,以帮助更多人. 一.什么是单元测试? 先来看看单元测试的定义,在维基百科英文版中可以找到Kolawa Adam在 Automated Defect Prevention: Best Practices in Software Management 一书中对单元测试的定义: In com

前端自动化测试漫长路之——Selenium初探

引言 最近想解决前端开发或测试中的两个问题:一是界面UI的布局适配,能否在测试的过程中,通过命令操作真机打开相应页面然后截屏,通过对图片识别分类,发现有问题的图片,然后及时修复:二是页面性能分析,很多时候页面只能在指定的Webview中使用,能否直接通过命令打开指定的页面,分析页面在真实APP中的性能,并生成报告.这两个问题的前提就是通过命令直接操作手机App,带着问题找线索,于是我就结识了Selenium,下面将结合实例和大家分享一下. Selenium是什么? 先看一下官网的解释: Sele

前端自动化测试神器-Katalon的基础用法

前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作里除去休息时间,我能在6个小时里像机器人一样保证每20秒处理一条数据). 显然,作为一个程序员,我是不可能让这样机械化的操作浪费我宝贵的生命的.第一反应是想到了若干年前被我用来做Web前端测试和写页游外挂的神器Selemium(当时页游真的很火,我用自己写的脚本,在只花了很少钱的情况下,用了不到3周

支付宝开源非侵入式 Android 自动化测试工具 Soloπ

Soloπ(SoloPi)是支付宝开源的一个无线化.非侵入式的Android自动化测试工具,公测版拥有录制回放.性能测试.一机多控三项主要功能,能为测试开发人员节省宝贵时间. 本文是SoloPi团队关于项目的深度解读, 作者:乔瑞凯,蚂蚁金服高级无线开发工程师 前言 近年来,随着移动互联网的蓬勃发展,移动测试技术也取得了长足的进步,从早期基于测试脚本的单机自动化,到录制回放.图像识别.云测平台等测试技术贴合实际业务需求深度应用和创新,测试效率从而一次又一次被提升. 本文主要介绍支付宝在移动端上实