2012-11-20 70 views
3

我有一個網頁,在加載dom之後,javascript繼續在頁面上運行,並將元素添加到頁面上。在所有的javascript運行之後,我會引發一個jquery事件page.loaded,這樣在頁面上有興趣做一些事情的組件可以做到這一點。用casperjs處理jquery事件

我想使用casperjs/phantomjs自動測試此網頁,並且我想僅在jQuery頁面加載事件被激發後才檢查頁面上的元素。我應該如何去做這件事?

+0

需要反饋的時間? –

回答

7

看看waitFor家庭功能,以等待在頁面環境中發生的事情。你可以等待some elementtext在DOM可用,或直接以處理其它步驟添加特定的jQuery聽衆:

casper.start('test.html', function() { 
    this.evaluate(function() { 
     $(document).on('site:loaded', function() { 
      window.siteLoaded = true; 
     }); 
    }); 
}); 

casper.waitFor(function() { 
    return this.evaluate(function() { 
     return window.siteLoaded === true; 
    }); 
}); 

casper.then(function() { 
    // process further 
}); 

注:這油膏僞代碼,目的僅僅是圖片的概念。