我正在使用Selenium,需要确定jquery动画是否已完成,然后再继续下一步(点击,输入等)。
我需要在不改变站点上已有的任何现有动画脚本的情况下这样做 - 所以我需要能够监视JQuery中我可以迭代的内容,当任何/所有动画停止时,我可以继续。
这样的事情是理想的......
function jqueryWait(){
while(jQuery.animation.queue > 0){
// do nothing - wait
}
// return to selenium
return true;
}
答案 0 :(得分:2)
在不知道动画的全部细节的情况下,你不能通过检查是否有任何jquery活动进行这样更通用:
function jqueryWait(){
while(jQuery.active != 0){
// do nothing - wait
}
// return to selenium
return true;
}
这就是我在进行硒测试之前等待任何jquery ajax请求完成的方法
答案 1 :(得分:0)
如果不修改jquery动画脚本,我认为没有办法做到这一点。如果在动画完成时它将使用动画向元素添加一个类,那么你可以检查该类是否存在,但除此之外唯一可能的杂乱选项是好的Thread.Sleep(xxxxxx);
答案 2 :(得分:0)
据我所知,它没有正式记录(因此可能会在没有警告的情况下进行更改),但只要动画正在运行,$.timers.length
似乎就不会为零。
答案 3 :(得分:0)
答案在the linked question:使用http://api.jquery.com/animated-selector/
如果您知道要检查的具体元素:$("#el").is(":animated")
如果不是:$(":animated").length == 0
当然,您可以使用return (boolean) ((JavascriptExecutor) driver).executeScript(scriptHere);
作为等待条件,在自定义等待中包装任意javascript代码