Skip to main content
 首页 » 编程设计

jquery之使用 QUnit、JQuery 和 iframe 进行 UI 测试之如何等待新页面加载

2026年07月24日11jyk

我正在使用 QUnit 和 JQuery,想要测试我网站的用户界面。我的网络应用程序驻留在 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调用资源。无论如何,仍然不知道如何调用 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); 
        }); 

请您参考如下方法:

你应该尝试

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

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