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

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

本文关键字:JSON 加载 等待 CasperJS 何等待      更新时间:2023-09-26

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

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

但是根据我的web代理,客户端在收到整个响应之前关闭了连接。我试过等待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变为指定的URL。它与单独加载的资源(如AJAX响应)无关。

你要么需要

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