Nightmare Js 评估页面
Nightmare Js evaluate page
我 运行 以下代码使用 Nightmare.js:
var test = 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://en.wikipedia.org/wiki/Ubuntu')
.inject('js', 'jquery.js')
.wait(500)
.screenshot('page.png')
.evaluate(
function ()
{
return $('h1.firstHeading').text(); //Get Heading
},
function (value)
{
console.log("Not in page context");
}
)
.run(
function (err, nightmare)
{
if (err) return console.log(err);
console.log('Done!');
}
);
页面已加载且屏幕截图 page.png 已正确截取,但是
评估回调永远不会被执行,因为消息 "Not in page context" 永远不会被打印。 jquery.js 与脚本位于同一文件夹中,并且成功注入,因为如果我删除 injectJS 我
收到一个错误,指出 $ 未定义。我想获取文字内容
h1.firstHeading 选择器的
为什么没有执行评估回调。
主要问题在于 console.log
在 evaluate()
中不起作用。
evaluate 只对return回调中的数据负责。
目前评估函数遵循格式.evaluate(fn, args1, args2)
。因此,在您的情况下,虽然您的第一个函数将 return 数据,但下一个函数不会。
如果您只想要标题 return 函数的值并在 运行 函数中执行 console.log(噩梦)。
请在下面找到示例代码更改:
.evaluate(
function ()
{
if($('h1.firstHeading').text())
return $('h1.firstHeading').text(); //Get Heading
else
return "Not in page context";
}
)
.run(
function (err, nightmare)
{
if (err) return console.log(err);
console.log(nightmare);
console.log('Done!');
}
);
希望这对您有所帮助!
谢谢
我 运行 以下代码使用 Nightmare.js:
var test = 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://en.wikipedia.org/wiki/Ubuntu')
.inject('js', 'jquery.js')
.wait(500)
.screenshot('page.png')
.evaluate(
function ()
{
return $('h1.firstHeading').text(); //Get Heading
},
function (value)
{
console.log("Not in page context");
}
)
.run(
function (err, nightmare)
{
if (err) return console.log(err);
console.log('Done!');
}
);
页面已加载且屏幕截图 page.png 已正确截取,但是 评估回调永远不会被执行,因为消息 "Not in page context" 永远不会被打印。 jquery.js 与脚本位于同一文件夹中,并且成功注入,因为如果我删除 injectJS 我 收到一个错误,指出 $ 未定义。我想获取文字内容 h1.firstHeading 选择器的
为什么没有执行评估回调。
主要问题在于 console.log
在 evaluate()
中不起作用。
evaluate 只对return回调中的数据负责。
目前评估函数遵循格式.evaluate(fn, args1, args2)
。因此,在您的情况下,虽然您的第一个函数将 return 数据,但下一个函数不会。
如果您只想要标题 return 函数的值并在 运行 函数中执行 console.log(噩梦)。
请在下面找到示例代码更改:
.evaluate(
function ()
{
if($('h1.firstHeading').text())
return $('h1.firstHeading').text(); //Get Heading
else
return "Not in page context";
}
)
.run(
function (err, nightmare)
{
if (err) return console.log(err);
console.log(nightmare);
console.log('Done!');
}
);
希望这对您有所帮助! 谢谢