NightmareJS 脚本从不 Return?
NightmareJS Scripts Never Return?
考虑以下 NightmareJS 脚本...
var Nightmare = require('nightmare');
var yandex = new Nightmare()
.viewport(1000,1000)
.useragent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36")
.goto('https://yandex.com/')
.run(function(err, nightmare) {
if(err) {
console.log(err);
}
});
它只是挂起,从来没有 returns 我看到提示。执行操作。我可以截图和做其他事情,但节点进程永远不会结束。
如果你像那样使用Nightmare,你会遇到麻烦。 Async/await 在使用 Nightmare.js
时解决了很多问题
async function test(url){
try{
const nightmare = Nightmare({show:true})
await nightmare.useragent(userAgentOption)
const response = await nightmare.goto(url)
await nightmare.wait(2000)
const evaluated = await nightmare.evaluate(()=>{
return document.querySelector("input").innerHTML
})
}catch(err){
throw new Error(err)
}
}
您可以在每个步骤后登录该函数以查看失败的地方。
更好的选择是使用 WebStorm,因为它在调试时效果很好Nightmare.js
像 iron-node 这样的调试解决方案是基于 Electron 的,它们不适用于 Nightmare.js code
现在你可以这样调用代码了:
test("https://yandex.com").then(console.log).catch(console.log)
考虑以下 NightmareJS 脚本...
var Nightmare = require('nightmare');
var yandex = new Nightmare()
.viewport(1000,1000)
.useragent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36")
.goto('https://yandex.com/')
.run(function(err, nightmare) {
if(err) {
console.log(err);
}
});
它只是挂起,从来没有 returns 我看到提示。执行操作。我可以截图和做其他事情,但节点进程永远不会结束。
如果你像那样使用Nightmare,你会遇到麻烦。 Async/await 在使用 Nightmare.js
时解决了很多问题async function test(url){
try{
const nightmare = Nightmare({show:true})
await nightmare.useragent(userAgentOption)
const response = await nightmare.goto(url)
await nightmare.wait(2000)
const evaluated = await nightmare.evaluate(()=>{
return document.querySelector("input").innerHTML
})
}catch(err){
throw new Error(err)
}
}
您可以在每个步骤后登录该函数以查看失败的地方。
更好的选择是使用 WebStorm,因为它在调试时效果很好Nightmare.js
像 iron-node 这样的调试解决方案是基于 Electron 的,它们不适用于 Nightmare.js code
现在你可以这样调用代码了:
test("https://yandex.com").then(console.log).catch(console.log)