Nightmare.js介绍和安装
Nightmare是由segment提供的高级自动化库。它是烟雾测试自动化的很好选择,因为它可以执行所有的文本输入、点击和视觉检查,就像人一样。它使用Electron作为无头浏览器。在本文中,我们将详细讨论Nightmare.js和Nightmare.js的安装。
Nightmare.js简介
Segment提供了Nightmare,一个复杂的浏览器自动化库。Nightmare的目标是模拟用户活动(如goto、type、click等),而不是使用嵌套回调,为每个脚本块暴露一些基本方法,并提供一种感觉同步的API。尽管它最初是为了在没有API的网站上自动化操作,但今天它最常用于爬虫、UI测试等。
注意 − 运行Nightmare需要NodeJS 4.x或更高版本。
Nightmare.js安装
为了测试网站界面,我们尝试了Nightmare.js,一个JavaScript浏览器自动化库。
在个人电脑上使用Nightmare比在Cloud 9上更简单。下面是设置和启动的指导。
步骤1 下载Node.js
JavaScript通常在浏览器中运行。Node.js是JavaScript的一个变种,可以用于服务器、终端或其他硬件。它可以简单地创建和执行Nightmare脚本。
下载Node.js链接
https://nodejs.org/en/download/
步骤2 下载NPM
您可以使用Node Package Manager(npm)进行Nightmare库的设置。当您使用npm安装它时,Nightmare的所有依赖项都将被安装。
NPM安装链接
https://nodejs.org/en/
步骤3 安装Nightmare.js库
使用以下命令
npm install nightmare
我们已经看过了如何在node js playground中安装nightmare.js库,现在让我们来看一些nightmare的基础知识,然后我们再来看看nightmare的对象。
nightmare的基本语法是−
const Nightmare = require('nightmare')
const nightmare = Nightmare({object : value_of_object})
在上面的代码中,我们使用节点js的require()方法导入了‘nightmare’,然后将其存储在一个变量中,我们随后使用该变量来定义一些对象和值,并将其再次存储在一个新变量中。
现在我们已经看到了nightmare.js的一些基本代码结构,现在让我们转向Nightmare.js的对象
Nightmare.js的对象
nightmare.js创建了一个新的对象,通过网络导航并提供有用的信息,为了增加一些更详细的规范,我们有了一些nightmare的对象,这些对象将帮助我们更好地浏览网页,让我们看一些示例
watiTimeout
该对象默认时间为30秒,用户也可以根据需要定义一些时间,并在设置的时间范围内未能返回true值时抛出异常。
const Nightmare = require('nightmare')
const nightmare = Nightmare({
waitTimeout: 2000 // in milliseconds
})
在上面的代码中,首先,我们将Nightmare引入到我们的系统中,然后创建了一个对象。在变量中,我们为对象’waitTimeout’提供了它的值,即2000毫秒。
gotoTimeout
这个对象默认的时间是30秒,用户还可以根据需要定义一些时间,并在函数“ .goto() ”在提供的或设置的时间范围内无法加载时抛出异常。
const Nightmare = require('nightmare')
const nightmare = Nightmare({
gotoTimeout: 2000 // in milliseconds
})
在上面的代码中,首先,我们将nightmare引入到我们的系统中,然后创建了一个对象。在变量中,我们提供了对象’gotoTimeout’及其值为2000毫秒。
loadTimeout
这个对象默认的时间是无限秒,用户也可以根据需要定义一些时间,并强制Nightmare在页面的转换(如点击等操作)在给定的时间内未完成时离开或移动。
const Nightmare = require('nightmare')
const nightmare = Nightmare({
loadTimeout: 2000 // in milliseconds
})
在上面的代码中,首先我们将nightmare引入了我们的系统,然后我们为它创建了一个对象。在变量中,我们提供了对象’loadTimeout’的值为2000毫秒。
executionTimeout
这个对象默认的时间是30秒,用户也可以根据需要定义一些时间,并显示等待方法’.evaluate’完成的最长时间。
const Nightmare = require('nightmare')
const nightmare = Nightmare({
executionTimeout: 2000 // in milliseconds
})
在以上代码中,首先,我们将nightmare引入了我们的系统,然后创建了一个对象。在变量中,我们为对象’exectutionTimeout’提供了它的值为2000毫秒。
paths
定义了许多默认的系统路径,这些路径是electron所知道的。可以使用nightmare的path对象覆盖这些路径,具体操作如下:
const Nightmare = require('nightmare')
const nightmare = Nightmare({
paths: {
userData: ‘/user/data’
}
})
在上面的代码中,首先我们把nightmare导入到我们的系统中,然后创建了一个对象。在变量中,我们提供了对象的路径,在其中定义了一个electron的路径。
electronPath
这对于测试不同版本的Electron非常有用,它们是预先构建好的electron二进制文件的路径。可以使用nightmare的path对象覆盖这些路径。让我们看一下electronpath如何定义的代码。
const Nightmare = require('nightmare')
const nightmare = Nightmare({
electronPath: require('electron')
})
在上面的代码中,首先我们将nightmare引入到我们的系统中,然后创建了一个对象。在变量中,我们提供了electronPath对象,它的键值将使用required关键字进行导入。
switches
Electron也支持google命令行支持的开关。在这个类别中有各种开关。让我们看一下代码,了解如何在nightmare.js对象中使用开关对象的信息 –
const Nightmare = require('nightmare')
const nightmare = Nightmare({
switches: {
'key1' : 'value1',
'key2' : 'value2',
}
})
在上面的代码中,首先我们导入了nightmare到我们的系统中,然后我们创建了一个对象。在变量中,我们为对象提供了开关,并在其中定义了两个键值对。
结论
在本文中,我们详细介绍了Nightmare.js和Nightmare.js的安装。Nightmare是由Segment提供的高级自动化库。它是一个很好的烟雾测试自动化选项,因为它可以执行所有文本输入、点击和视觉检查,就像一个人一样。它作为使用Electron的无头浏览器运行。