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

in CasperJS, how do you wait for JSON to complete loading?

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

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

但是根据我的网络代理,客户端在收到整个响应之前关闭了连接。我试过等待 URL 出现。它按预期等待 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 代码在继续下一步之前已经完全加载?

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

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

您要么需要

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