Вы читаете журнал [info]swtesting

Последний тип обрабатываемых selenium rc диалоговых окон браузера, с которыми вам придется сталкиваться - prompt. В selenium rc для их обработки используются следующие методы:

selenium.answerOnNextPrompt(...) - задает строку ответа для следующего promptа.
selenium.getPrompt() - обрабатывает prompt, используя заданную строку ответа, и возвращает текст promptа. Если строка ответа не была предварительно задана, prompt не будет обработан :(
selenium.isPromptPresent() - проверяет, присутствует ли prompt.


 
 
Помимо alertов, приходиться сталкиваться и с другими видами диалоговых окон браузера. Один из таких диалогов - это confirmation, с которым selenium rc прекрасно работает. Для этого в selenium rc используются следующие методы:

selenium.isConfirmationPresent() - метод selenium rc, проверяющий появился ли confirmation.
selenium.getConfirmation() - метод selenium rc, нажимающий кнопку на confirmation и возвращающий его текст.
selenium.chooseCancelOnNextConfirmation() - метод selenium rc, выбирает кнопку отмена, для последующего нажатия
selenium.chooseOkOnNextConfirmation() - метод selenium rc, выбирает кнопку ок, для последующего нажатия


 
 
Занимаясь тестировании веб сайтов, приходиться сталкиваться с диалоговыми окнами браузера. С одним из таких диалоговых окон - alertом selenium rc прекрасно умеет работать. Для этого в selenium rc используются следующие методы:

selenium.isAlertPresent() - метод selenium rc, проверяющий появился ли alert.
selenium.getAlert() - метод selenium rc, нажимающий кнопку ок на alertе и возвращает его текст.


 
 
Используя selenium rc, часто встречаются элементы, появляющиеся без обновления всей страницы. Что делать в таких случаях, можно ли средствами selenium организовать ожидание таких элементов. Ответ да! Selenium - это умеет. Для примера возьмем главную страницу рамблера. Будем кликать по ссылке 'Видео' во втором слева выпадающе меню.

selenium.open("http://www.rambler.ru/");
selenium.click("xpath=//span[@id='menuButton1']/following::a");

Ждем появления выпадающего меню в течении 10 секунд
selenium.waitForCondition("selenium.isVisible('id=menuSlide1')", "10000");
selenium.click("xpath=//span[.='Видео']");

Ждем появления ссылки Видео в течении 10 секунд
selenium.waitForCondition("selenium.isElementPresent('link=Видео')", "10000");

Другие заметки о selenium rc... )
 
 
Продолжим рассматривать примеры использования осей xpath в selenium rc. Проверить их можно на главной странице рамблера. Подробно об xpath можно узнать на сайте w3c, а первую часть примеров прочитать здесь: Использование xpath в selenium rc. Оси в xpath. Часть первая.

Ось child:: - Возвращает множество потомков на один уровень ниже. В сокращенном синтаксисе ось child:: просто опускают.

Ось attribute:: - Возвращает множество атрибутов текущего элемента. В сокращенном синтаксисе ось attribute:: - можно заменить на «@»

Ось parent:: - Возвращает предка на один уровень назад. В сокращенном синтаксисе ось parent:: - можно заменить на «..»

 
 
Selenium rc предоставляет большой набор методов, для работы с элементами web-страниц. Во многих методах selenium rc, для определения элемента, с которым будем работать, используются локаторы. Один из способов задания локатора в selenium rc - это использование xpath. Подробно об xpath можно узнать на сайте w3c. Сейчас мы рассмотрим примеры использования осей xpath в selenium rc. Все примеры можно проверить на странице открыток яндекса.

Ось descendant:: - Возвращает полное множество потомков.

Ось descendant-or-self:: - отличается от оси descendant тем, что вместе с множеством предков возвращает и текущий элемент. В сокращенном варианте ось descendant-or-self:: - можно заменить на «//»

Ось ancestor:: - Возвращает множество предков.

Ось ancestor-or-self:: - отличается от оси ancestor тем, что вместе с множеством предков возвращает и текущий элемент.

Ось following:: - Возвращает необработанное множество, ниже текущего элемента.

Ось following-sibling:: - Возвращает множество элементов на том же уровне, следующих за текущим.

Ось preceding:: - Возвращает множество обработанных элементов исключая множество предков.

Ось preceding-sibling:: - Возвращает множество элементов на том же уровне, предшествующих текущему.

 
 
Одна из часто встречающихся задач в тестировании web-сайтов - это проверка битых ссылок. Link Evaluator может облегчить эту задачу. Утилита представлена в виде плагина firefox, довольно проста и удобна в использовании. Но оставим слова, перейдем к использованию и посмотрим ее в деле.

Первый эксперимент - проверяем ссылки в новостях на сайте газпрома
Страница содержит большое количество новостных ссылок, среди которых могут быть битые.

Второй эксперимент - проверяем ссылки в салонах-магазинах на сайте мтс
Страница содержит много текстовых ссылок, несколько баннеров и графическое меню.

Третий эксперимент - проверяем ссылки на главной странице сайта it4business
На странице очень много ссылок по сайту и внешних ссылок.

Итак, подведем итог:
Плюсы:
1) Информативное графическое представление результатов проверки
2) Наличие текстовых результатов
3) Наличие всплывающих посказок
Минусы:
1) Ссылки без текста, например ссылки-картинки не всегда подсвечиваются
2) Баннеры не всегда подсвечиваются
3) Ссылки выделеные как timed out вводят в заблуждение
4) Не всегда верно подсвечиваются элементы

Скачать link evaluator можно на сайте mozilla.org

 
 
SnagIt - еще одно средство, облегчающее тестировщикам создание скринштов. Утилита сделана в виде отдельного приложения. Так что возможностей у snagit много. Можно делать различные варианты скриншотов:
  1. Выбранную область экрана
  2. Выбранное окно
  3. Весь экран
  4. Скриншот всей web-страницы
В snagit есть очень богатый набор возможностей комментирования скриншотов. Различные стрелочки, подписи и другие инструменты очень обильно представлены в snagit. Есть много инструментов для редактирования изображения: изменения размера, поворот, обрезка скриншота и т.п. инструменты содержаться в snagit. Есть много удобных способов сохранения скриншотов: сохранение в файлы word, excel, powerpoint; отправка по email и ftp.

Среди других интересных возможностей snagit: запись видео и возможность делать скриншот с задержкой во времени. Из недостатков стоит отметить, что утилита платная.Стоимость snagit 49.95$, но есть trial версия на 30 дней. Скачать snagit и познакомиться подробнее можно на официальном сайте

 
 
Сегодня мы не будем тестировать весь web-сайт, а ограничимся тестированием одной важной для этого web-сайта функциональности - формы покупки билета онлайн, находящейся на главной странице http://www.transaero.ru . Для начала составим небольшой тест план:
  1. Тестирование различных вариантов полета : в один конец/туда-обратно
  2. Тестирование различных вариантов даты в полях туда/обратно с выбором через календарь или прямым вводом в форму.
  3. Тестирование различных вариантов городов в полях туда/обратно.
  4. Тестирование различных вариантов класса полета.
  5. Тестирование различных вариантов количества пассажиров.
  6. Тестирование сложного маршрута.

Используя приведенный тест план, были найденны следующие баги:
  1. Не работает календарик, для выбора даты 'обратно' - получаем ошибку javascript.
  2. В полях даты, при выборе дня недели дата меняется автоматически для всех дней, кроме понедельника.
  3. Если выбрать 8 взрослых пасажиров покажут предупреждение 'Слишком много путешествующих выбрано', удобнее было бы ограничить число пассажиров уже в форме выбора.
  4. В выборе сложного маршрута не работает кнопка 'еще строки'
  5. Под firefox немного съезжает верстка на главной странице(между формой покупки и рекламным блоком, сразу под ней появляется белая полоса) и на странице выбора маршрута(календарики съезжают на следующую строку)
  6. Под opera 9.5 после выбора маршрута на главной странице переходим на сайт https://fastcheck.sita.aero/cce-presentation-web-un/entryUpdate.do , а в firefox и ie при таких же действиях на сайт http://book.fly-un.com/itd/itd .
  7. Баг вне приведенного тест плана, на странице http://www.transaero.ru/airport/index.html и аналогичных ей, верхнее выпадающее меню(в самолете, компания) перекрывается баннером.

 
 
Selenium rc содержит несколько методов, позволяющих выполнять операции drag and drop. Так что, если в вашем проекте есть объекты, которые необходимо перетаскивать, selenium rc вам в этом поможет. В selenium rc есть следующие методы для перетаскивания объектов :
selenium.dragAndDrop(String locator, String movementsString) - метод selenium rc, перетаскивающий объект с локатором locator, на отклонение movementString от начального положения


selenium.dragdrop(String locator, String movementsString) - метод selenium rc, по действиям аналогичен предыдущему, но является deprecated. Вместо него рекомендуется использовать selenium.dragAndDrop


selenium.dragAndDropToObject(String locatorOfObjectToBeDragged, String locatorOfDragDestinationObject) - метод selenium rc, перетаскивающий объект с локатором locatorOfObjectToBeDragged к объекту с локатором locatorOfDragDestinationObject.