Могу ли я обрабатывать события при выполнении тестов Selenium? - PullRequest
0 голосов
/ 29 июня 2011

Я новичок в Selenium ...

Как программист JavaScript, я думаю, что хочу обрабатывать события JavaScript в моих тестах Selenium-2 (JUnit).Я присоединяюсь к команде, в которой все существующие тесты имеют методы "waitForSomethingToBeRendered".Есть ли какой-нибудь способ, которым мои тесты Selenium могут обрабатывать / прослушивать события DOM (или пользовательские)?

Кроме того, я читал об SO, где разработчики используют FireBug для написания / отладки тестов Selenium-2.Как это работает?Я не вижу FireBug в браузере, запущенном Selenium.Точно так же, почему следующее, кажется, не имеет никакого эффекта?Я пытаюсь что-то, что Selenium / JUnit не поддерживает?

selenium().getEval("alert('hello');");
selenium().getEval("debugger;");

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Используйте Firebug для Firefox при обычном просмотре вашего сайта, чтобы изучить ваш DOM и определить правильные идентификаторы элементов и классов, которые нужно выбрать в вашем скрипте Selenium. Если вы используете extjs, вы будете иметь дополнительное удовольствие при определении того, какие элементы выбрать, так как extjs рандомизирует идентификаторы элементов. Лучший способ - добавить дополнительный класс CSS, чтобы найти правильный элемент, а затем выбрать по этому классу.

1 голос
/ 30 июня 2011

Вы не видите расширение firebug, потому что селен открывает огненного лиса.Я предполагаю, что причина в том, что это намного быстрее.Возможно (и довольно легко в селене-2) добавить плагин.

Предупреждение не работает, потому что селен-1 (я не знаю, как селен 2 обрабатывает их) глотает предупреждения.Существует API для обработки оповещений.

Плюс, в селене-1 JS запускается в другом окне.Таким образом, эквивалент document.getElementById() равен sel.getEval("selenium.browserbot.getCurrentWindow().document.getElementById()").

Наконец, я не знаю о событиях, но вы можете подождать условий: sel.wait_for_condition().

1 голос
/ 30 июня 2011

Во-первых, если вы только начинаете работать с Selenium, я предлагаю использовать API 2.0 для WebDriver. Чтобы оценить JavaScript в 2.0, просто приведите ваш объект WebDriver к объекту JavascriptExecutor и используйте предоставленные им методы. 'waitForSomethingToBeRendered' нужно сделать за несколько шагов. Прежде всего вы должны убедиться, что объект DOM доступен на странице. Для этого вы можете сделать что-то вроде этого:

WebElement e = null;

try {
  e = driver.findElement( By.id("asdf") );
} catch {
  ...
}

Или:

driver.findElements( By.id("asdf") ).size() != 0

Определив, доступен ли объект DOM, вы можете:

e.isDisplayed()

Что вернет вам, отображается ли элемент в данный момент.

Что касается того, что вы видели о FireBug и Selenium, я полагаю, вы путаете Selenium IDE, который является плагином Firefox, с Selenium RC / WebDriver, который не является плагином.

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