JQuery global isAnimating check для использования с Selenium (2) - PullRequest
3 голосов
/ 03 ноября 2011

Я работаю с Selenium и мне нужно определить, завершены ли анимации jquery, прежде чем переходить к следующему действию (щелчок, ввод и т. Д.).

Мне нужно сделать это без изменения каких-либо существующих сценариев анимацииуже на сайте - поэтому мне нужно иметь возможность отслеживать что-то в JQuery, которое я могу перебирать, и когда любая / все анимации останавливаются, я могу продолжать.

Что-то подобное было бы идеально ...

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

Ответы [ 4 ]

2 голосов
/ 03 ноября 2011

Не зная полных деталей анимации, вы не могли бы сделать это более общим, проверив, происходит ли что-нибудь активное, как jquery:

function jqueryWait(){
    while(jQuery.active != 0){
        // do nothing - wait
    }
    // return to selenium
    return true;
}    

Вот как я жду любой jquery ajaxпросьба завершить, прежде чем перейти к моим тестам на селен

0 голосов
/ 08 мая 2014

Ответ: связанный вопрос : используйте http://api.jquery.com/animated-selector/

Если вам известен конкретный элемент для проверки: $("#el").is(":animated")

Если нет: $(":animated").length == 0

Конечно, вы можете обернуть произвольный код JavaScript в пользовательское ожидание, используя return (boolean) ((JavascriptExecutor) driver).executeScript(scriptHere); в качестве условия ожидания

0 голосов
/ 12 января 2013

Насколько я знаю, это официально не задокументировано (и поэтому может измениться без предупреждения), но кажется, что $.timers.length будет ненулевым, пока анимация запущена.

0 голосов
/ 03 ноября 2011

Я не думаю, что есть способ сделать это без изменения сценариев анимации jquery.Если по завершении анимации это добавит класс к элементу с анимацией, то вы можете проверить, существует ли класс, но кроме этого единственно возможный грязный вариант - старый добрый Thread.Sleep(xxxxxx);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...