Как использовать waitForCondition () - PullRequest
4 голосов
/ 08 ноября 2010

Добрый день,

Я новичок в селене и пытаюсь написать простой тест.Я хочу протестировать свою функциональность AJAX, поэтому я подумал, что метод waitForCondition () мне подходит.Проблема в том, что я каждый раз получаю сообщение о том, что testLoop не определен.Мой тест прост:

@Test
public void firstTest() 
{
    selenium.open(BASE_URL);
    assertTrue(selenium.isElementPresent("css=a#performAjax"));
    selenium.click("link=Add some content!");
    String script = "selenium.browserbot.getCurrentWindow().document.getElementByClassName('ajaxMessage').length > 0";
    selenium.waitForCondition(script, "10000");
    Assert.assertEquals(selenium.getText("css=div.ajaxMessage"), "You got me with AJAX!");
}

Но каждый раз, когда я запускаю его, я получаю ошибку:

com.thoughtworks.selenium.SeleniumException: ERROR: Command execution failure. Please search the forum at http://clearspace.openqa.org for error details from the log window. The error message is: testLoop is not defined

Я искал форумы и т. Д., Чтобы найти ответ на этот вопрос, но япока не нашел ничего полезного.Любые советы приветствуются.

Другие советы, касающиеся лучших способов написания тестов на селен, также приветствуются, но моя главная цель - обойти эту ошибку:)

Если кому-то интересно, да,Я подтвердил, что ошибка выдается во время моего вызова waitForCondition ().

1 Ответ

4 голосов
/ 09 ноября 2010

Еще несколько поисков сделали свое дело!Для всех, кому интересно ...

Пользователь, комментирующий в этом посте , упоминает, что текущая реализация расширения waitForCondition () не синхронизирована с текущей версией selenium.Файл user-extensions.js должен быть обновлен, чтобы заменить все экземпляры testLoop на TestLoop.

Если вы импортировали selenium-rc в качестве внешнего jar-файла в Eclipse, как я это сделал, это вопрос распаковки jar-файла, редактирования файла js и повторного сжатия его в jar-файл.

Обновление:

После дальнейших исследований кажется, что waitForElementPresent () является предпочтительным способом сделать это, поскольку вы можете просто указать локатор, а не вычислять выражение JavaScript.Также есть waitForTextPresent () и другие эквиваленты.

Эти методы AJAX отсутствуют в файлах .jar, которые вы получаете с selenium-rc.Они доступны в Selenium-IDE, и если вы экспортируете эти тесты в Java, вы увидите, что он просто создает цикл с тайм-аутом по умолчанию, равным 60 секундам, и проверяет isElementPresent ().

Если вы предпочитаетечтобы работать строго из Java-режима, вы, вероятно, можете создать несколько помощников, чтобы выполнить эту работу за вас, поскольку разархивирование jar, изменение пользовательских расширений и повторное заархивирование jar становится довольно утомительным и раздражающим.

...