2011-01-14 33 views
7

我们的网站在$(document).ready()函数中设置了很多JavaScript/jQuery工作,设置了按钮,通过ajax加载内容等等。Selenium一直等到DOM加载完毕,然后继续测试。 ready()已完成。

的部分解决方案似乎是使用检查,看看是否浏览器已经挂起的Ajax请求:

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

但是这并不能保证我们不还是设置按钮和东西绑定。

任何帮助将大大赞赏。当前的'最好'建议是在.ready()方法结尾添加一个元素到Selenium可以捕获的信号开始工作,但是为了测试目的添加这样的代码看起来似乎很粗略。

回答

3

我相信你可以使用窗口加载检查。尝试:

$(window).load(function(){ 
    selenium.browserbot.getCurrentWindow().jQuery.active == 0 
}); 
1

当前“最佳”的建议是 在 端。就绪()方法,这 硒能作为信号赶上到 开工添加元素到页面,但是为了测试目的而添加 这样的代码的想法似乎粗略。

我个人认为修改代码以提高可测试性是一件坏事。如果你真的宁愿不污染你的生产页面,那么使用一些像PHP这样的模板工具来仅在开发/调试模式下输出代码。

此外,您不需要为此使用DOM。 Selenium可以访问页面中的完整JavaScript上下文,因此您可以使用全局变量作为标志。也许某些不太可能被其他人使用的东西,例如SELENIUM_PAGE_FULLY_READY然后让Selenium检查它的存在。

相关问题