在CasperJS中,您如何等待JSON完成加载?

时间:2015-10-02 09:24:16

标签: javascript json casperjs

我正在访问一个发出(大)JSON响应的网站。点击会触发请求:

casper.then(function li10() {
    casper.click(SEARCH_BUTTON_CSS);
});

但根据我的网络代理,客户端会在收到整个响应之前关闭连接。我已经尝试等待网址出现了。它会按预期等待URL,但这似乎不够:

casper.then(function li11() {
    casper.waitForUrl(/\/search-results\/p\?/,
                      function() { 
                          var search_url = casper.getCurrentUrl();
                          console.log('found search results, url = ' + search_url);
                      },
                      function() { 
                          console.log('failed to find search results');
                          casper.exit();
                      },
                      10000);
});

那么:我可以等待哪些可靠的东西可以保证JSON代码在进入下一步之前已完全加载?

1 个答案:

答案 0 :(得分:0)

我假设您将填写搜索字段,单击按钮,JavaScript会发出Ajax请求以接收JSON响应,然后解析它并显示结果。

casper.waitForUrl()用于等待页面URL更改为指定的URL。它与单独加载的资源(如AJAX响应)无关。

您需要

  • 找出针对搜索操作请求的特定网址,并使用casper.waitForResource()等待该特定资源或
  • 设计一个特定的选择器,该选择器在解析搜索数据并使用casper.waitForSelector()注入页面时显示。