自动化测试工具-Nightmare

今天在阮大博客上面看到的一个自动化测试库,官网上是这么说的 “A high-level browser automation library.”

官网提供实例:

使用 phantomjs 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open('http://yahoo.com', function (status) {
page.evaluate(function () {
var el =
document.querySelector('input[title="Search"]');
el.value = 'github nightmare';
}, function (result) {
page.evaluate(function () {
var el = document.querySelector('.searchsubmit');
var event = document.createEvent('MouseEvent');
event.initEvent('click', true, false);
el.dispatchEvent(event);
}, function (result) {
ph.exit();
});
});
});
});
});

使用 nightmare 代码:

1
2
3
4
yield Nightmare()
.goto('http://yahoo.com')
.type('input[title="Search"]', 'github nightmare')
.click('.searchsubmit');

API 地址 点这里

安装使用

安装nightmare:

1
$ npm install nightmare

nightmare同时也支持插件方式抽取公用逻辑,以供复用和提高测试代码语意,如下例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* Login to a Swiftly account.
*
* @param {String} email
* @param {String} password
*/
exports.login = function(email, password){
return function(nightmare) {
nightmare
.viewport(800, 1600)
.goto('https://swiftly.com/login')
.type('#username', email)
.type('#password', password)
.click('.button--primary')
.wait();
};
};

使用代码也很简单:

1
2
3
4
5
var Swiftly = require('nightmare-swiftly');
new Nightmare()
.use(Swiftly.login(email, password))
.use(Swiftly.task(instructions, uploads, path))
.run();