我复制粘贴Github上的示例:
app.js:
var Nightmare = require('nightmare');
var vo = require('vo');
vo(function* () {
var nightmare = Nightmare({ show: true });
var link = yield nightmare
.goto('http://yahoo.com')
.type('input[title="Search"]', 'github nightmare')
.click('.searchsubmit')
.wait('.ac-21th')
.evaluate(function () {
return document.getElementsByClassName('ac-21th')[0].href;
});
yield nightmare.end();
return link;
})(function (err, result) {
if (err) return console.log(err);
console.log(result);
});
我做了:npm install nightmare vo
然后node --harmony app.js
但没有输出:
alex@alex-K43U:~/node/nightmarejs$ node --harmony app.js
alex@alex-K43U:~/node/nightmarejs$
没有任何错误消息。可能是什么问题?
(我在Ubuntu上运行节点v5.2.0。)
答案 0 :(得分:1)
两部分答案:
雅虎改变了部分内部命名。梦魇(作为这个答案的时间)并不是很好,除非对不存在的元素的操作失败,就像你的例子一样。雅虎名称的问题在#490中报告并在#491中修复。从修复:
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true })
nightmare
.goto('http://yahoo.com')
.type('input[title="Search"]', 'github nightmare')
.click('#uh-search-button')
.wait('#main')
.evaluate(function () {
return document.querySelector('#main .searchCenterMiddle li a').href
})
.end()
.then(function (result) {
console.log(result)
});
如果您无头地跑步(例如,在Crouton或DigitalOcean或Docker下),我建议您查看#224。这也可能产生您所看到的错误行为。