2011-03-29 191 views
0

我一直在使用Selenium来自动化网站测试。部分测试涉及等待AJAX​​请求完成。我一直在使用这条线来做到这一点与jQuery 1.4:Selenium在Chrome中等待AJAX​​

selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().jQuery.active == 0", "5000"); 

它在Chrome和Firefox 4,但不是IE9罚款。然后我升级到jQuery 1.5,并且它奇迹般地停止了在Chrome中的工作。我试过下面的变化,但他们没有工作:

selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().jQuery.active == 0", "5000"); 
selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().jQuery.ajax.active == 0", "5000"); 
selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().$.active == 0", "5000"); 
selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().$.ajax.active == 0", "5000"); 

的SeleniumException是,它不能读取属性active或不确定ajax,所以我想这在某种程度上无法得到jQuery的。我的同事在Firefox 4上运行相同的测试,并且他们通过。

有没有人遇到过这个问题?有什么建议么?

回答

0

显然,在硒中的一切都可以通过随机抛出Thread.Sleep()s来固定。窗口在某些情况下还没有完成加载,这就是为什么$未定义。我在等待之前睡了一觉,现在它工作得很好。

我不得不使用下面一行:

selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().$.active == 0", "5000"); 

即使人们说我应该用$.ajax.active如果我使用jQuery 1.5,它是不确定的我,而$.active作品。