Selenium在Chrome中等待AJAX
问题描述:
我一直在使用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上运行相同的测试,并且他们通过。
有没有人遇到过这个问题?有什么建议么?
答
显然,在硒中的一切都可以通过随机抛出Thread.Sleep()s
来固定。窗口在某些情况下还没有完成加载,这就是为什么$
未定义。我在等待之前睡了一觉,现在它工作得很好。
我不得不使用下面一行:
selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().$.active == 0", "5000");
即使人们说我应该用$.ajax.active
如果我使用jQuery 1.5,它是不确定的我,而$.active
作品。