Selenium: Ajax Testing - PullRequest
       8

Selenium: Ajax Testing

6 голосов
/ 28 июня 2011

Пожалуйста, ознакомьте меня с тестированием Ajax с селеном RC.Так как элемент Ajax не отражается на исходном представлении, но с помощью firebug мы можем видеть изменения в исходном коде HTML.

С этим тестированием Ajax связано два метода.

1-Метод "waitForCondition (сценарий java.lang.String, тайм-аут java.lang.String), чтобы предоставить сценарий, мы должны создать собственный сценарий java, или это должен быть тот же сценарий Ajax / сценарий java, который присутствует на веб-странице.

Пожалуйста, исправьте меня, если я ошибаюсь в точке ниже.

2-Метод "waitForElemantPresent (Locator)", мы проверяем элемент в firebug и проверяем то же самое в этом методе самостоятельно.waitForElemantPresent ( Locator ).

Дайте мне знать, если что-то еще мне не хватает при тестировании Ajax-приложения.

Ответы [ 2 ]

6 голосов
/ 30 июня 2011

Я получил помощь по этому вопросу из одной статьи и с помощью @ Hannibal

http://agilesoftwaretesting.com/?p=111

JQuery: «jQuery.active»

Прототип: «Ajax.activeRequestCount»

Dojo: «dojo.io.XMLHTTPTransport.inFlight.length»

Так что, если есть вызов Ajax, мы можем использовать второй вариант.

selenium.waitForCondition(
        "selenium.browserbot.getCurrentWindow().jQuery.active == 0",
        timeout);
1 голос
/ 29 июня 2011

Чтобы ответить на ваш первый пункт, да waitForCondition(javascript,timeout) будет запускать JavaScript, пока не вернет истинное значение ИЛИ, когда истечет время ожидания.Вы должны взглянуть на документацию API для этого, так как вам нужно использовать browserbot для запуска скрипта в окне вашего приложения.Ссылка на документацию API: здесь

В Selenium 1 одним из способов обработки условий Ajax является создание пользовательских функций, которые будут ожидать выполнения условия или истечения времени ожидания.,В то время как обычный Selenium.isElementPresent немедленно завершится сбоем, если элемент отсутствует, ваша пользовательская функция будет ждать еще некоторое время (время загрузки Ajax), прежде чем произойдет сбой.В качестве примера вы можете сослаться на следующий пользовательский метод для isElementPresent.Это написано на JAVA, вы должны иметь возможность использовать ту же логику в используемом вами языке программирования.

public boolean AjaxIsElementPresent(String elementToLookFor, int timeOutValueInSeconds){

int timer=1;
while(timer<=timeOutValue){
 if(selenium.isElementPresent(locator))
   return true;
 else
   Thread.sleep(1000);
     }
return false;

}

Этот метод вернет логическое значение false, если элементотсутствует даже после указанного значения timeoutValue.Если он находит элемент в значении timeout, то возвращает true.

Я видел некоторые встроенные функции для обработки AjaxCondition в Selenium 2. Но я не использовал его.Вы можете обратиться к Selenium 2 code base

...