【发布时间】:2012-07-21 05:18:44
【问题描述】:
我正在使用 CasperJS 通过网站自动执行一系列点击、完成表单、解析数据等操作。
Casper 似乎以then 语句的形式组织成一个预设步骤列表(请参阅此处的示例:http://casperjs.org/quickstart.html),但不清楚是什么触发了下一个语句实际运行。
例如,then 是否等待所有待处理的请求完成? injectJS 是否算作待处理请求?如果我有一个嵌套的 then 语句 - 链接到 open 语句的末尾会发生什么?
casper.thenOpen('http://example.com/list', function(){
casper.page.injectJs('/libs/jquery.js');
casper.evaluate(function(){
var id = jQuery("span:contains('"+itemName+"')").closest("tr").find("input:first").val();
casper.open("http://example.com/show/"+id); //what if 'then' was added here?
});
});
casper.then(function(){
//parse the 'show' page
});
我正在寻找有关 CasperJS 中流程如何工作的技术解释。我的具体问题是我的最后一个then 语句(上图)在我的casper.open 语句之前运行,我不知道为什么。
【问题讨论】:
-
我仍在寻找对 casperjs 的一般
flow的解释,但我发现您基本上无法从evaluate调用中引用 casper。 (即您不能打开新的 url、日志、回显等)。所以在我的情况下,evaluate 被调用但无法与外界交互。 -
我想知道完全相同的事情,但懒得问。好问题!
-
evaluate()用于在“浏览器”中运行的代码,在 phantomjs 正在浏览的页面的 DOM 中。所以那里没有casper.open,但可能有jQuery。所以你的例子没有意义,但我仍然想知道then()究竟做了什么。
标签: javascript casperjs