2013-11-29 56 views
0

我正在編寫一個自動化測試程序,它應該測試任何網站。如何得知沒有AJAX調用正在等待加載?

我想單擊文檔的某個元素,但在此之前我想驗證沒有任何AJAX調用正在運行。

我只會有文檔,而不是任何AJAX調用URL或類似的東西。

有沒有什麼辦法可以在文檔上驗證沒有AJAX請求正在執行。

我該怎麼做?

+0

修改原生XMLHttpRequest方法。繁榮,完成;) –

回答

1

簡單的回答:你不能。 HTTP是無狀態的,瀏覽器無法知道請求是否已發送,以及我們是否仍在等待回覆。

唯一可以知道的應用程序本身就是應用程序邏輯。當您等待AJAX​​回覆,添加到列表中,增加計數器時,設置一個變量...然後您可以「觀察」變量。

恐怕我不知道一個優雅的方式來實現這一點。在方法中封裝所有AJAX調用並使用該方法可能會起作用 - 您可以在上線時禁用測試代碼。

0

也許你不需要JavaScript?所以你可以使用這種類型的代碼;

javascript:void(d=document);if(frames.length){alert('Script doesnt work in frame');}else 
    {while((el=d.getElementsByTagName('script')).length 
     {el[0].parentNode.removeChild(el[0]);};onerror=function(){};d.close();} 
1

jQuery有幾個AJAX event handlers。如果在ajaxStart上將ajaxIsExecuting設置爲true,並在ajaxStop上將其設置爲false,則應該瞭解AJAX是否正在執行。

0

您可以使用以下技術:

var loadingarray=[]; 

function GetCommand(id, sid) { 
    if (loadingarray[id]) {return false;} 
    loadingarray[id] = true; 
     getCommandResponse = $.ajax({ 
//send id to server 
     .... 
     .... 
     }); 

} 

function AjaxFinishedGet(xml, status) { 
//retrieve id from server in xml 
    loadingarray[id] = false; 
    ... 
    ... 
} 

,然後你可以簡單的檢查loadingarray具有真正的價值。如果有;一些使用id運行的ajax調用。如果它不知道運行中沒有任何ajax進程。