使用QUnit,JQuery和iframe进行UI测试 - 如何等待新页面加载?

时间:2012-05-27 10:25:50

标签: jquery wait qunit

我正在使用QUnit和JQuery,并希望测试我网站的用户界面。我的webapp位于iframe中。我想点击导航链接,然后等到加载新页面然后我想通过JQuery选择一些项目以确保加载了正确的页面。

如何实现这一目标?

我读到了关于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);
        });

更新:我能够通过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);
        });

1 个答案:

答案 0 :(得分:2)

你应该试试

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

})

还有一种方法可以在QUnit中进行异步测试,但我也不确定它是否适用于您的情况(asyncTest( name, expected, test )