Posts tagged ‘i2test’

Автоматизация, как много в этом слове. Автоматизация работы в Web часть 2

А на утро они проснулись…

Перечитав последнюю статью понял что “недоперепил” и не добавил почти никакой документации. Исправляюсь…

Официальная страница Watir на RubyForge:
http://wtr.rubyforge.org/
Страница на OpenQA.org(изобилует примерами и документацией):
http://wiki.openqa.org/display/WTR/Project+Home
Инструкция по установке FireWatir:
http://wiki.openqa.org/display/WTR/FireWatir+Installation
Небольшая статья по той же теме:
http://citforum.ru/programming/ruby/watir/

Автоматизация, как много в этом слове. Автоматизация работы в Web

Вступление

Как уже говорилось в предисловии, все мы ленивы и хотим работать меньше и получать больше :).
Именно для этих целей люди создали станки, автомобили и прочие другие прелести.
В этой заметке я хотел бы немного рассказать про автоматизацию работы с web-приложениями при помощи Ruby и Watir.

Что такое Watir?

Watir – библиотека для Ruby предназначенная для автоматизации работы с Web приложениями и их тестирования.
Существует также версии этой библиотеки для Java (Watij) и .Net(WatiN и BrowserUnit).

Что нужно для работы?

Для начала работы вам нужно:

  • Windows с IE 6 и выше (лучше всего IE8 т.к. он значительно меньше тормозит)
  • Firefox (см. ниже)
  • Ruby 1.8.6 или выше
  • Немного Интернет трафика
  • Ровные руки
  • Желание что-нибудь автоматизировать

Настройка и установка Watir

Ruby

Установим watir:

gem install watir

Соглашаемся с установкой всех пакетов по зависимостям.

Проверим что gem установился правильно, запустите irb и выполните следующие команды:

require 'rubygems'
require 'watir'

Если все хорошо, команды пройдут без ошибок.

Для самых ленивых ;), устанавливаем в Firefox модуль iTest2, он позволяет записывать действия пользователя прямо в код на Ruby/Watir.
Скачать можно отсюда: http://www.itest2.com/downloads
Прямаю ссылка для установки: http://www.itest2.com/downloads/itest2recorder.xpi

После успешной установки в меню “Tool” (“Инструменты”) появится пункт “iTest2 Recorder Sidebar”.

Отлично можно начинать программить >:-)

Простой пример использования Watir для поиска в Google

require 'rubygems'
require 'firewatir'
 
include FireWatir
 
browser = Watir::Browser.start "http://www.google.ru/"
browser.text_field(:name, "q").set("demotivation")
browser.button(:name,"btnG").click

Открывает гугль и ищет страницы по слову “demotivation”

Пример сложнее(нае… обманываем bux.to)

Для тех кто ждет “чуда”, есть порталы аля http://bux.to, на таких сайтах вы получаете денежку за то что ходите по ссылкам которые вам дают. Вот простой пример как “дурить контору”(предпологается что вы уже залогинились):

require 'rubygems'
require 'watir'
ie = Watir::IE.new
ie.goto( 'http://www.bux.to/surf.php')
ie.refresh
doc = ie.document
index1 = 0
doc.links.each do |n|
  index1 += 1
end
        index = 18
while index >17 do
        index = 0
        doc.links.each do |n|
                index += 1
        end
        ie.link(:index, '11').click
        sleep(35)
        ie.refresh
end
ie.close
Watir::IE.close_all
Watir::IE.close_all

Для самых ленивых, iTest2 Recorder

Если вы не очень хотите забивать себе голову программированием воспользуйтесь iTest2 в Firefox.

Нажмите Alt+Shift+R. Сделайте все необходимые действия на сайте и нажмите “Record” в столбце iTest2. Перейдите на закладку “Watir” и скопируйте код.

Вставляем в текстовом редакторе, добавляем вначало следующие строки:

require 'rubygems'
require 'watir'
# ваш код

запускаем и наслаждаемся…

Ложка дегтя

Есть у iTest2 маленький недостаток, он не следит за экранированием двойных и ординарных кавычек, а так же неправильно вновит данные в поле типа “textarea” (вместо “browser.area” нужно писать “browser.text_field” ).

Заключение

Как админу мне не нравится винда, поэтому использование MS Windows + IE меня немного раздражает, но к сожалению это пока единственный вариант который меня устроил. Есть еще FireWatir, но к сожалению проект не поддерживает некоторых функций Watir и абсолютно не понимает кодировки отличные от ASCII. Если у кого-то есть желание, я могу описать как пользовать FireWatir (он работает и в Linux), пишите в комментариях.