在 CasperJS 中发送一个 Ajax 请求并循环遍历结果

Send an Ajax request in CasperJS and loop through results

我目前正在尝试从 GET 调用中获取 json 值(主要是 urls)并将其分配给一个变量。我最终想遍历这些值并用 casper 打开每个 url。但是,我发现通过使用 casperjs 的 ajax 调用获取值的概念不正确。我通读了文档,但似乎不明白为什么我仍然收到错误 ReferenceError: Can't find variable: __utils__?

casper.start();
var url = "http://dev.web-ui.com/generate.php";

casper.then(function(url) {
    var results = __utils__.sendAJAX(url, "GET");
});

casper.run();

你参加casper测试了吗?如果是这样,也许 var __utils__ = require('clientutils').create(); 会解决它。不幸的是,我现在不能自己尝试。

您至少有两个问题:

  • url参数不是URL,而是最后加载的包含URL.

    [=25的页面资源对象=]
  • __utils__ 在页面上下文之外不可用。如果需要,您可以要求它,但这可能无法解决您的问题,因为页面上下文之外的虚拟 document.location 与您要查询的 URL 的域不同,因此由于跨域限制,请求可能会失败。最好在页面上下文中执行此操作。

示例代码:

casper.then(function(resource) {
    var results = this.evaluate(function(url){
         return __utils__.sendAJAX(url, "GET");
    }, resource.url);
    this.echo(results);
});