Как использовать waitForCondition ()

Добрый день,

Я новичок в селене и пытаюсь написать простой тест. Я хочу протестировать свою функциональность 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 () выдается ошибка.

4 голоса | спросил Samo 8 12010vEurope/Moscow11bEurope/MoscowMon, 08 Nov 2010 23:58:54 +0300 2010, 23:58:54

1 ответ


0

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

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

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

Update:

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

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

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

ответил Samo 9 22010vEurope/Moscow11bEurope/MoscowTue, 09 Nov 2010 00:43:26 +0300 2010, 00:43:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132