JQuery global isAnimating检查与Selenium一起使用(2)

时间:2011-11-03 16:45:35

标签: jquery animation selenium

我正在使用Selenium,需要确定jquery动画是否已完成,然后再继续下一步(点击,输入等)。

我需要在不改变站点上已有的任何现有动画脚本的情况下这样做 - 所以我需要能够监视JQuery中我可以迭代的内容,当任何/所有动画停止时,我可以继续。

这样的事情是理想的......

function jqueryWait(){
    while(jQuery.animation.queue > 0){
        // do nothing - wait
    }
    // return to selenium
    return true;
}

4 个答案:

答案 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代码