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

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

一、前言

参考:首先本文主要是参照:搭建自己的前端自动化测试脚手架 ,并加上自己的理解,大家可以看看。

涉及知识: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

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

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

在nwDemo文件夹里创建build文件夹,并添加一个selenium-conf.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'
}
}
}

3.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.3 安装Selenium

执行 下面命令安装 Selenium

npm run selenium-setup 

3.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测试的。话说现在的三大框架我都不会,真的有些落伍了,得赶紧去补补了...

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

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

    一.robot简介 robot是dojo框架中用来进行前端自动化测试的工具,doh主要目的在于单元测试,而robot可以用来模仿用户操作来测试UI.总所周知,Selenium也是一款比较流行的前端自动 ...

  2. Mac005--VS&webstorm前端开发工具安装

    Mac--Visual studio Code工具安装(企业常用) 安装网址:https://code.visualstudio.com/download 设置格式: 1.配置工作区与终端字体大小 常 ...

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

    前言 项目中需要用到前端自动化测试,自己被当作一个探针研究了下目前用的比较多的web自动化测试工具.一开始研究的是的selenium,但由于项目使用了大量的dijit控件,写起testCase来很费劲 ...

  4. 前端自动化测试工具--使用karma进行javascript单元测试(转)

    Karma+Jasmine+PhantomJS组合的前端javascript单元测试工具. 1.介绍 Karma是由Google团队开发的一套前端测试运行框架,karma会启动一个web服务器,将js ...

  5. RFS自动化测试工具安装与使用总结

    转载:http://blog.csdn.net/a5650892/article/details/77826021 一,调试1,在调试时,总时提示“无法打开浏览器”解决办法:1,把浏览器的代理关闭2, ...

  6. PJSIP 自动化测试工具安装 Python安装

    Python安装,记录步骤如下 1.下载PythonIDE安装包 到官网 https://repo.continuum.io/archive/下载需要的版本,选择的Anaconda版本3的,当然也可以 ...

  7. TOSCA自动化测试工具安装

    1.下载链接 https://www.tricentis.com/software-testing-tools/ 2.免费试用14天, 弹出的页面输入邮箱地址--> 输入一堆信息-->点击 ...

  8. 前端见微知著工具篇:Grunt实现自动化

    转载说明 本篇文章为转载文章,来源为[前端福利]用grunt搭建自动化的web前端开发环境-完整教程,之所以转载,是因为本文写的太详细了,我很想自己来写,但是发现跳不出这篇文章的圈子,因为写的详尽,所 ...

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

    Webdriver是一个前端自动化测试工具,可以模拟用户点击链接,填写表单,点击按钮等操作,下面介绍其使用 一.下载WebdriverC#类库以及对应浏览器驱动 http://www.selenium ...

随机推荐

  1. java中自己常犯的错误汇总

    package debug; /** 1.定义一个公共的动物类,包含名字.年龄.颜色和吃饭东西方法 2.定义一个猫类,继承动物类,同时拥有玩游戏的本领 3.定义一个狗类,继承动物类,同时拥有看门的本领 ...

  2. Python 线程同步锁, 信号量

    同步锁 import time, threading def addNum(): global num num -= 1 num = 100 thread_list = [] for i in ran ...

  3. 【代码笔记】Web-ionic-列表

    一,效果图. 二,index.html代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...

  4. CMake笔记(一)

    CMake,比makefile更方便,虽然手写makefile同样重要 CMake的所有命令均出现在CMakeList.txt中,注意名字不要写错,并置于源代码目录中 # CMake 最低版本号要求 ...

  5. vue.js及项目实战[笔记]— 01 vue.js

    一. vue基础 1. 历史介绍 angular 09年,年份较早,一开始大家是拒绝的 react 2013年,用户体验较好,直接拉到一堆粉丝 vue 2014年,用户体验较好 前端框架与库的区别 j ...

  6. vue路由的配置

    一.准备工作 1安装vue-cli  npm install vue-cli -g 2检查是否安装成功 vue -V(大写V) 3初始化一个新的项目 vue init  webpack vue-dem ...

  7. Expo大作战(四十一)【完】--expo sdk 之 Assets,BarCodeScanner,AppLoading

    Expo大作战系列完结! 简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与 ...

  8. (网页)the server responded with a status of 403 (Forbidden)

    403跨域问题.看一下要访问的url.

  9. sql server 如何查询出数据库作业所有者的信息并完成批量替换

    今天数据库对入职一年的我建立了独立的数据库账号,之前我是和其他同事共享的,之前的所有者账号被废弃了,这时导致很多数据库作业执行失败. 下面是说明如何把之前所有的作业的所有者替换成正在使用的账号: 下面 ...

  10. Linux 下查看系统当前登录用户信息

    当你新登录一个主机,过着管理一个主机,这时候你就需要这些命令来进行查看了: 1. w : Show who is logged on and what they are doing. w [optio ...