噩梦Js评估页面
Nightmare Js evaluate page
I使用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已正确拍摄,但是evaluate回调从未被执行,因为消息"Not in page context"从未被打印出来。jquery.js和脚本在同一个文件夹中,它被成功地注入,因为如果我删除injectJS I获取一个错误,指示未定义$。我想获取文本内容h1.第一个航向选择器的。
为什么未执行评估回调。
主要问题在于console.log
在evaluate()
中不起作用。
evaluate只负责返回回调中的数据。
目前,评估函数采用.evaluate(fn, args1, args2)
格式。因此,在您的情况下,虽然第一个函数会返回数据,但下一个函数不会。
如果你只想要标题,只需返回函数中的值,并在run函数中执行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!');
}
);
希望这能有所帮助。!感谢
相关文章:
- 如何检查链接是否有文本,并根据文本值评估条件-Jquery/JS
- r.js评估'text'插件,尽管在'stubModules'参数
- 带有 Sweet.js 的惰性评估宏
- 避免在 Angular.js 中对绑定值进行不必要的评估
- 在undercore.js微模板中评估数据的错误做法
- 使用Rhino从已评估的JS中获取函数名及其参数
- 如何从Windows上的Emacs中评估javascript缓冲区(通过node.js)
- 从节点.js中扫描的图像中评估复选框
- Angular JS - 动态评估指令
- JS与C++表达式评估
- 节点.js REPL 有趣的行为与自定义评估函数
- 如何在噩梦中运行多种评估方法.js
- 在 Vugen TruClient Protocol 中的对象步骤上评估 JS 中使用 Javascript Regex
- 培根中的惰性评估是什么.js
- ng-禁用的角度JS来评估获得$http.get的函数
- Node.js TCP服务器,用于评估和打印数据
- Phantomjs/Casperjs没有正确评估德国亚马逊网站上的JS/Ajax
- 如何让NodeJS评估多个传统JS文件
- 使用JQuery从Ajax响应中评估JS
- 不能用产量评估 js 代码