【问题标题】:in CasperJS, how do you wait for JSON to complete loading?在 CasperJS 中,如何等待 JSON 完成加载?
【发布时间】:2015-10-02 09:24:16
【问题描述】:

我正在访问一个发出(大)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 json casperjs


    【解决方案1】:

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

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

    你要么需要

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

    【讨论】:

    • 黎明时分,我意识到你是对的:我需要复制点击生成的 URL,但实际上我需要在 JSON 合并到 DOM 之前捕获它,所以我真正需要的是打电话给casper#download()
    • 你对一个不好的问题给出了一个很好的答案,所以我会给你支票。我不会将我的原始问题编辑成其他问题,而是发布一个新问题。留意它! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    相关资源
    最近更新 更多