2012-05-27 9 views
5

Używam QUnit i JQuery i chcę przetestować interfejs użytkownika mojej witryny. Mój webapp znajduje się w elemencie iframe. Chcę kliknąć link nawigacji, a następnie poczekać na załadowanie nowej strony, a następnie chcę wybrać kilka elementów za pośrednictwem JQuery, aby upewnić się, że została załadowana właściwa strona.Test interfejsu użytkownika z QUnit, JQuery i iframe - jak czekać na załadowanie nowej strony?

Jak to osiągnąć?

Przeczytałem o setTimeout(), delay(), ajaxSetup(), setInterval(), do tej pory: bez powodzenia.

Oto fragment kodu:

// 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: Udało mi się wywołać ressource przez AJAX. W każdym razie wciąż nie ma pojęcia jak wywołać 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); 
     }); 

Odpowiedz

2

Należy spróbować

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

}) 

Jest też droga do testowania asynchronicznym w QUnit, ale jestem pewien, że nie odnosi się do sprawy (asyncTest(name, expected, test))

Powiązane problemy