2015-07-11 96 views
3

我想湊http://www.snapdeal.com/offers/deal-of-the-day其使用AJAX調用JSON數據加載到頁面如下:CasperJS無法湊AJAX網頁

json_url = http://www.snapdeal.com/json/getProductById?* 

我使用的代碼塊下面,我得到的日誌消息Waiting for AJAX request:,但不是Waiting for AJAX request:,而不是waitForResource超時

casper.options.onResourceRequested = function (casper, requestData){ 
    // loop through our AJAX urls 
    // create list of AJAX urls to track 
    var ajaxUrls = [json_url]; 

    ajaxUrls.every(function(ajaxUrl){ 
     // does this request match an AJAX url 
     if(requestData.url.indexOf(ajaxUrl) !== -1){ 
      // it matches, so we'll wait for it to return (with 10s timeout) 
      //console.log("Waiting for AJAX request: " + requestData.url); 
      // print_object(requestData); 
      casper.waitForResource(requestData.url, function(){ 
       console.log("AJAX request returned: " + requestData.url); 
      }, function(){ 
       console.log("AJAX request didn't return after wait period: " + requestData.url) 
      }, 10000); 
     } 
    }); 
} 

進一步調試,我記錄的事件,併成功接收的URL json_url資源,但不知道爲什麼waitForResource次。運行後

casper.on('resource.received', function(resource) { 
    if (resource.url.indexOf('http://www.snapdeal.com/json/getProductById') != -1){ 
     casper.echo('resource.received: ' + resource.url); 

    } 

}); 

登錄:

Waiting for AJAX request: http://www.snapdeal.com/json/getProductById?pogIds=671556289429,649272180,60998,685755068805,677649317861,1239888775,661402031482,636966047361,1775140628,1822452791,439536 ,Range,2042952975,1472100667,899358889,643129681532,668235859588,&lang=en 

resource.received: http://www.snapdeal.com/json/getProductById?pogIds=671556289429,649272180,60998,685755068805,677649317861,1239888775,661402031482,636966047361,1775140628,1822452791,439536,Range, 2042952975,1472100667,899358889,643129681532,668235859588,&lang=en 

resource.received: http://www.snapdeal.com/json/getProductById?pogIds=671556289429,649272180,60998,685755068805,677649317861,1239888775,661402031482,636966047361,1775140628,1822452791,439536,Range, 2042952975,1472100667,899358889,643129681532,668235859588,&lang=en 

AJAX request didn't return after wait period: http://www.snapdeal.com/json/getProductById?pogIds=671556289429,649272180,60998,685755068805,677649317861,1239888775,661402031482,636966047361,17751406 28,1822452791,439536,Range,2042952975,1472100667,899358889,643129681532,668235859588,&lang=en Got page No Offeres Found thestartin: ~/Appli 
+2

你試過waitForSelector,它是一個更好地識別某些資源在該網頁上以及該資源上的waitForSelector。 – kumar

+0

是我第二,你必須使用waitForSelector – user3833838

+0

是的,我已經試過waitForSelector但它仍然無法正常工作。 –

回答

0

你需要的是:

casper.waitForSelector() 

casper.waitFor(function() { 
    // test here something that return true when the page is loaded 
})