在CasperJS中发送Ajax请求并循环结果

Send an Ajax request in CasperJS and loop through results

本文关键字:请求 循环 结果 Ajax CasperJS      更新时间:2023-09-26

我目前正试图从GET调用获取json值(主要是url)并将其分配给变量。最后,我想循环遍历值并使用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();

你至少有两个问题:

  • url参数不是URL,而是包含该URL的最后加载的页面资源对象。

  • __utils__在页面上下文之外不可用。如果需要,您可以要求它,但这可能无法解决问题,因为页面上下文之外的虚拟document.location与您想要查询的URL具有不同的域,因此请求可能由于跨域限制而失败。

示例代码:

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

您在casper测试中吗?如果是这样,也许var __utils__ = require('clientutils').create();会解决它。很遗憾,我现在不能亲自尝试。