2009-08-19 210 views
2

我试图让Selenium在继续下一个命令之前等待页面上的所有AJAX请求完成。我正在使用wait_for_condition和以下JavaScript:Selenium在Internet Explorer中的wait_for_condition

function(){ 
    var wait = function() { return jQuery.active == 0; } 
    return wait.call(selenium.browserbot.getCurrentWindow()); 
}(); 

这在Firefox中正常工作,但在IE中超时失败。

有谁知道为什么这可能是或有一个等待AJAX​​请求完成的替代方法?

回答

1

如何只使用这个简化的版本:

selenium.browserbot.getCurrentWindow().jQuery.active == 0; 

听起来很愚蠢,但大多数的IE问题以这种方式解决......

如果这不起作用,你可以分析另一种选择: http://www.markhneedham.com/blog/2009/05/14/selenium-waiting-for-jquery-ajax-calls/ 但我会住它作为最后的计划,修改jQuery来保持目前的Ajax调用的计数器听起来有点像矫枉过正...

1

我发现这个广告在很多博客文章中都是副作用,但神秘的没有人告诉这个“selenium.browserbot.getCurrentWindow()。jQuery.active == 0;”应该去。如果我将它放入IDE的“waitForCondition”参数中,它将不起作用。我猜它应该进入user-extensions.js,但不能作为匿名函数。我试图把它放在那个文件中:

function wait_for_ajax(timeout){ 
    return selenium.browserbot.getCurrentWindow().jQuery.active == 0; 
}; 

但它看起来像一个没有操作(下面的测试仍然失败)。