2012-05-27 46 views
5

我正在使用QUnit和JQuery,並想測試我的網站的用戶界面。我的web應用程序駐留在一個iframe中。我想單擊導航鏈接,然後等待,直到新頁面加載,然後我想通過JQuery選擇一些項目,以確保正確的頁面已加載。使用QUnit,JQuery和iframe進行UI測試 - 如何等待新頁面加載?

如何實現這一目標?

我讀了setTimeout(),delay(),ajaxSetup(),setInterval(),直到現在:沒有成功。

下面的代碼片段:

// Klick auf Unternehmen und vergleiche h1-Ueberschrift. 
     test("Klick Unternehmen, checke Ueberschrift", function() { 
      var mes = "test: Klick Unternehmen, checke Ueberschrift;"; 
      var exp = "Unternehmen"; 
      jQuery.ajaxSetup({ async: false }); //turn off async so tests will wait for ajax results 
      jQuery('#testframe').attr('src', './../index/unternehmen/').delay(3000); 
      var t = setTimeout('doNothing()', 2000); 
      //alert('now'); 
      var act = jQuery('h1').eq(1); 
      //var act = "Unternehmen"; 
      //console.log(mes); 
      equal(act, exp, mes); 
     }); 

UPDATE:我通過AJAX調用的ressource。無論如何,仍然不知道如何調用click() - wait() - compare()。

// Klick auf Unternehmen und vergleiche h1-Ueberschrift, Ajax S. 250 
     test("Klick Unternehmen, checke Ueberschrift", function() { 
      jQuery.ajax({ 
       url: "./../index/unternehmen/", 
       async: false, 
       success: function(response){ 
        if (response){ 
         jQuery('#ajaxcontent').html(response); 
        } 
       }, 
       context: document.body, 
       type: "POST" 
      }); 
      var mes = "test: Klick Unternehmen, checke Ueberschrift;"; 
      var exp = "Unternehmen"; 
      var act = jQuery('#ajaxcontent h1').eq(0).text(); 
      equal(act, exp, mes); 
     }); 

回答

2

你應該嘗試

$("#yourIframeID").load(function(){ 
    //do your testing stuff here.. 

}) 

還有爲QUnit異步測試的方式,但我也不確定它適用於您的情況下(asyncTest(name, expected, test)