在 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()
解析搜索数据并将其注入页面时出现。
我正在访问一个发出(大)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()
解析搜索数据并将其注入页面时出现。