前端的功能测试

官方说法A high-level browser automation library,翻译过来就是高级浏览器自动化库

常用于UI测试和爬网

功能测试必须在真正浏览器做,现在有四种方法。

  • 使用本机安装的浏览器
  • 使用 Selenium Driver
  • 使用 Headless Chrome
  • 使用 Electron

Nightmare

  • 使用 Electron 模拟真实浏览器环境
  • 提供大量人性化、易用的 API
  • 官网:nightmarejs.org

1.nightmare依赖于electron。安装electron(http://www.cnblogs.com/tanyongli/p/7504603.html)

2.安装完后electron后安装Nightmare

新建一个文件夹nightmare,在命令行里打开这个目录,执行 $ npm install nightmare

出现warn:在其他文章中看到说可以先不用管

在nightmare文件夹里面出现node_modules文件夹

在nightmare文件夹里新建example.js文件

example.js

 var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true }) nightmare
.goto('http://yahoo.com')
.type('form[action*="/search"] [name=p]', 'github nightmare')
.click('form[action*="/search"] [type=submit]')
.wait('#main')
.evaluate(function () {
return document.querySelector('#main .searchCenterMiddle li a').href
})
.end()
.then(function (result) {
console.log(result)
})
.catch(function (error) {
console.error('Search failed:', error);
});

然后在命令行里执行 $ node example.js

来执行example.js 这个文件,会出现效果图

  • goto(url[,headers]) url为你要跳转的网站url
  • wait(selector) 等待某个dom元素出现
  • type(selector[,text]) 在selector元素中输入text文本
  • click(selector) 点击某个dom元素
  • evaluate(fn[,agr1,agr2,...]) 在客户端注入JS脚本并执行 也就是你自己要封装数据的代码
  • end() 执行完成,等待对数据的处理

参考网址:https://github.com/ruanyf/jstraining/blob/master/docs/engineering.md

Nightmare安装and一个小例子的更多相关文章

  1. 使用Trinity拼接以及分析差异表达一个小例子

    使用Trinity拼接以及分析差异表达一个小例子  2017-06-12 09:42:47     293     0     0 Trinity 将测序数据分为许多独立的de Brujin grap ...

  2. java连接mysql的一个小例子

    想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...

  3. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  4. MVVM模式的一个小例子

    使用SilverLight.WPF也有很长时间了,但是知道Binding.Command的基本用法,对于原理性的东西,一直没有深究.如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个 ...

  5. Spring.Net在ASP.NET Mvc里使用的一个小例子

    就贴个小例子,就不注意格式了. 1.下载dll NuGet的下载地址:http://docs.nuget.org/docs/start-here/installing-nuget 在vs的NuGet里 ...

  6. 从一个小例子认识SQL游标

    1    什么是游标: 关系数据库中的操作会对整个行集起作用. 例如,由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行. 这种由语句返回的完整行集称为结果集. 应用程序 ...

  7. 关于SVN配置文件的一个小例子

    1   背景假设 厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式 ...

  8. Vue2.x源码学习笔记-从一个小例子查看vm实例生命周期

    学习任何一门框架,都不可能一股脑儿的从入口代码从上到下,把代码看完, 这样其实是很枯燥的,我想也很少有人这么干,或者这么干着干着可能干不下去了. 因为肯定很无聊. 我们先从一个最最简单的小例子,来查看 ...

  9. Spring和Hibernate结合的一个小例子

    1.新建一个SpringHibernate的maven项目 2.pom文件的依赖为 <dependency> <groupId>junit</groupId> &l ...

随机推荐

  1. popen和system问题

    popen和system问题 1. 问题描述 C的代码里面去调用命令启动一个shell脚本,分别使用了下面两个途径. 其中一个是: func1(cmd) { popen(cmd,type); pclo ...

  2. java正则表达式 1 -- 符号

    正则表达式主要是用于操作字符串的规则 1 首先体验一下正则表达式: 需求:某个串只能是数字 传统方法: public class Demo2{ public static void main(Stri ...

  3. HashMap和Hashtable的区别(转载)

    转载声明:转载自原文http://www.importnew.com/7010.html HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是 ...

  4. C语言循环结构作业总结

    循环作业总结 1.1 基本要求 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 博客作业不规范,没有Markdown语法 - 扣分 泛泛而谈(最多七分) 1.2 ...

  5. [转] UnityVS(Visual Studio Tools For Unity)的安装与使用

    一些废话 Unity 的开发者们,尤其是微软系的Unity开发者们,用Mono是不是烦死了?你是不是跟我一样,用vs来写代码,用Mono来跟踪调试?好麻烦啊好麻烦. 也许你会说,傻逼你不会用Unity ...

  6. 多个jar包的合并

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

  7. [Leetcode] combinations 组合

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  8. 洛谷 P1607 [USACO09FEB]庙会班车Fair Shuttle 解题报告

    P1607 [USACO09FEB]庙会班车Fair Shuttle 题目描述 Although Farmer John has no problems walking around the fair ...

  9. 禁止 iphone 网页上下拖动露底

    document.addEventListener('touchmove', function(e) { e.preventDefault();});

  10. 如何使用Navicat备份数据库脚本

    Navicat是一个实用的工具,可以用来备份数据库(Oracle.MySQL.SQLServer)脚本. 备份步骤如下: 1.打开已建立的数据库连接,鼠标右键点击,选择[转储SQL文件]->[结 ...