Перейти к содержимому

Фотография

Может ли waitFor срабатывать как assertion?


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 astenix

astenix

    Специалист

  • Members
  • PipPipPipPipPip
  • 906 сообщений
  • ФИО:Лёша Лупан
  • Город:Кишинев


Отправлено 01 декабря 2009 - 14:06

Используется Selenium IDE. В приложении - AJAX.

Суть дела: после нажатия кнопки "Удалить" на странице появляется отдельный слой с текстом "Вы уверены?" и линками "Да / Нет"

Задача:
  • нажать на кнопку "Удалить"
  • дождаться появления слоя
  • убедиться, что в слое в определенном месте (элемент страницы) находится текст "Вы уверены"?
Я сделал следующее:
  • click
  • pause | 2000
  • assertElementPresent
Для протокола: в третьем шаге по некоторым идеологическим причинам используется именно assert, а не verify.

Работает при условии, что за эти две секунды появится ожидаемый слой. Но иногда он не появляется. Значит, следует использовать waitForElementPresent.

Но waitForElementPresent - это проверка в стиле verify. А мне позарез нужно, чтобы проверка проводилась на уровне assertion, и в случае любых отклонений Selenium сразу останавливался.

Применил вот такой ход: ждем, когда элемент появляется, затем жестко проверяем его наличие:
  • click
  • waitForElementPresent
  • assertElementPresent
Почему так: потому, что если не проверять наличие элемента через assert, а он по каким-то причинам не появляется (или же появляется, но в измененном виде, что для Selenium = отсутствие элемента), то Selenium просто отмечает в логе, что элемента нет и быстро двигается далее.

Все работает, как будильник после посещения Кашпировского :pardon:

Вопрос: есть ли более простое и элегантное решение этой задачи? Можно ли сделать так, чтобы waitFor работал как assertion?
  • 0

Software Testing Glossary - простыми словами о непростых словах.


#2 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 01 декабря 2009 - 15:07

Вопрос: есть ли более простое и элегантное решение этой задачи? Можно ли сделать так, чтобы waitFor работал как assertion?

Судя по всему, для более "филигранных" решений вам нужен не Selenium IDE, а Selenium-RC. Там-то вы можете расширить клиентский интерфейс Selenium-а более высокоуровневыми функциями.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных