【发布时间】:2015-06-04 19:45:34
【问题描述】:
我正在尝试调试 casperjs 脚本using the remote debugger,我发现 casper 实例方法在脚本执行完成之前不起作用。似乎 then() 和 run() 如何在 casper 中工作的一些回调怪癖,但我不确定调试器的 casper 控制台端是否有用,如果你不能暂停程序执行并运行代码为如果它仍在运行(this answer 听起来确实可以)。
例如,hello_wolfram.js 启动一个 casper 实例,转到 wolfram alpha,回显页面标题,搜索分形,然后再次回显页面标题。这些页面标题调用在运行脚本中工作正常,但如果我尝试在 casper 上下文控制台中运行该命令,它会返回 null。其他 casper 方法也不起作用。虽然定义了 casper 变量,但我确实可以访问一个很好的、信息丰富的 Casper 对象。
var casper = require('casper').create();
casper.start('http://www.wolframalpha.com');
// echo page title for sanity check
casper.then(function(){
debugger; // 1
this.echo('Hello, Wolfram! The Page title is ' + this.getTitle());
});
// enter search term and submit form
casper.then(function() {
this.fill('form.index', {'i': 'fractals'}, true)
});
// echo page title on search results page
casper.then(function(){
debugger; // 2
this.echo('The Page title is now ' + this.getTitle());
});
casper.run();
休息1:
- casper 变量被定义并返回一个 Casper 对象 currentURL="http://www.wolframalpha.com/"
- casper.getTitle() 返回 null
休息 2:
- casper 变量被定义并返回一个带有 currentURL="http://www.wolframalpha.com/input/?i=fractals" 的 Casper 对象
- casper.getTitle() 返回 null
我真的希望我可以在 casper 控制台中运行 casper 命令,并在另一个窗口中查看它们对 DOM 的影响,这看起来就像调试器会给你一样。有没有办法用 casperjs 做到这一点?
【问题讨论】:
标签: debugging phantomjs casperjs remote-debugging