В настоящее время я создаю несколько тестовых случаев с Selenium, и я столкнулся с проблемой.
В моем тестовом примере веб-сайт, через который я пытаюсь пройти, имеет небольшую форму и кнопку для поиска. Нет проблем, заполнив форму и нажав кнопку. Проблема возникает, если щелкнуть по ней.
После нажатия на кнопку эта функция называется:
function muestraEspera(){
document.getElementById("divCargando").style.display = "";
}
По сути, это делает видимым DIV, который содержит «загрузочное» изображение, поэтому посетитель просто видит изображение и не сможет увидеть сайт, загружающий контент до его завершения (контент загружается с помощью ajax).
После загрузки содержимого выполняется эта функция:
function escondeEspera(){
document.getElementById("divCargando").style.display = "none";
}
Что в основном скрывает "загрузочный" DIV, чтобы посетитель мог видеть результаты.
Теперь я не могу использовать SLEEPS, потому что загрузка может занять больше или меньше, и потому что мне нужно реальное время выполнения веб-сайта. Есть ли способ (с помощью java - junit4) заставить селен подождать, пока вторая функция будет выполнена, прежде чем продолжить выполнение следующих шагов?
РЕДАКТИРОВАТЬ: я использую Selenium RC. Для запуска драйвера я использую:
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "website-url");
selenium.start();
}
В конце, решение, которое отлично сработало для меня, данное Павлом Яничеком:
boolean doTheLoop = true;
int i = 0;
while (doTheLoop){
i= i+200;
Thread.sleep(1000);
if (i>30000){
doTheLoop = false;
}
if (!selenium.isVisible("id=divCargando")){
doTheLoop = false;
}
if (selenium.isVisible("id=divCargando")){
doTheLoop = true;
}
}