【发布时间】:2016-08-27 02:52:04
【问题描述】:
我想弄清楚如何制作脚本点击链接并转到某个页面,然后执行一些操作。这是我坚持的示例,但不起作用。
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
nightmare
.goto("https://www.google.com/")
.type("input", "nightmare.js")
.wait(3000)
.click("button[type=submit]")
.wait(2000)
.evaluate(function(){
var title = document.querySelectorAll("h3 a");
i = 0;
if (title) {
title[i].addEventListener("click", function(){
setTimeout(function(){
alert("Success!");
}, 5000);
});
}
})
.then(function(result){
console.log("result", result);
})
.catch(function (error) {
console.error('Search failed:', error);
});
如您所见,它甚至不会转到下一页。
但是如果我这样定义点击,它将转到下一页,但我也需要它在另一个页面上执行一些功能:
.evaluate(function(){
var title = document.querySelectorAll("h3 a");
i = 0;
if (title) {
title[i].click();
}
})
所以这让我很困惑,不知道为什么它不起作用。
【问题讨论】:
-
addEventListener添加了一个事件监听器,但实际上并没有点击,因为这会立即触发事件,这会非常混乱。看来您的问题是evaluate之后的then没有正确等待页面加载,对吧? -
@artjom-b 我认为这正是发生的事情。因为我在终端中得到“结果为空”。如何解决这个问题?
-
你得到
null的结果,因为你永远不会返回任何东西。
标签: javascript electron nightmare