17.21.38
Розгортання зв'язки Ruby + Selenium 2
ruby and selenium logo
Вступ
Ruby — кросплатформенна повністю об'єкто-орієнтована мова програмування.
Selenium 2 — засіб для тестування веб-додатків з широким вибором функціоналу для тестування.

Налаштування середовища

Для початку власне потрібно встановити Ruby.
Нас цікавить версія ruby 1.9.3. Я використовую ruby 1.9.3p194 (2012-04-20 revision 35410).
sudo apt-get install ruby1.9.3

Встановлюємо Ruby Gems — package management framework for Ruby libraries/applications
sudo apt-get install rubygems

Встановлення потрібних Ruby Gem'ів.
Встановлюємо selenium-webdriver. Це головний компонент, який містить по замовчуванню webdriver до firefox, в якому будуть запускатись та виконуватись тести.
sudo gem install selenium-webdriver

Далі нам потрібен test-unit gem, який містить команди для тестування.
sudo gem install test-unit

Після виконання даних команд переконаймося, що у нас все готово для роботи:
Перевіряємо версію Ruby
ruby -v

Бажаний результат:
atech@atech:~$ ruby -vruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

Перевіряємо список gem'ів
gem list

Бажаний результат (версії gem'ів можуть відрізнятись):
atech@atech:~$ gem list
*** LOCAL GEMS ***
childprocess (0.3.6)
ffi (1.2.0)
headless (0.3.1)
libwebsocket (0.1.6.1)
multi_json (1.3.7)
rubyzip (0.9.9)
selenium-webdriver (2.31.0, 2.26.0)
test-unit (2.4.0)
websocket (1.0.4)

Перевіряємо роботу зв'язки

Створимо тест, який буде відкривати google, вводити в поле пошуку atech. Перевіряти чи перший елемент пошукової вибірки aTech, якщо так то клікати на нього. На сайті aTech відкривати вкладку «Люди» та вводити в поле пошуку 'threestarsgenius' після чого клікати на кнопку пошуку. Далі перевіряти чи в результаті пошуку знайшовся шуканий користувач перевіривши його нік. Якщо так то вікривати його профіль та перевірити його ім’я.
Створюємо порожній файл, вставлямо код, зберігаємо з ім’ям simpleTest.rb
Запускаємо командою:
atech@atech:~$ ruby simpleTest.rb

Код:
# simpleTest.rb
require "rubygems"
require "selenium-webdriver"
require "test/unit"

class TC_GoogleAtech<Test::Unit::TestCase

# do this before run test
def setup
# set firefox web-driver
@driver = Selenium::WebDriver.for :firefox
# set timeout in seconds
@driver.manage.timeouts.implicit_wait = 30
end

# do this after run test
def teardown
# close web-driver
@driver.quit
end

def test_open_google_find_atech
# open google.com
@driver.get('http://google.com')
# type atech.pp.ua in search input
@driver.find_element(:id => 'gbqfq').send_keys('atech.pp.ua')
# click search button
@driver.find_element(:id => 'gbqfb').click()
# check if text of the first element in search result equal to aTech do next
if assert_equal('aTech', @driver.find_element(:xpath => '/html/body/div[5]/div[2]/div/div[7]/div/div[3]/div/div[2]/div/ol/li/div/h3/a/em').text)
# click on it
@driver.find_element(:xpath => '/html/body/div[5]/div[2]/div/div[7]/div/div[3]/div/div[2]/div/ol/li/div/h3/a/em').click
# click on 'Люди'
@driver.find_element(:xpath => '//*[@id="header"]/ul[1]/li[3]/a').click
# enter threestarsgenius in search input
@driver.find_element(:id => 'search-user-login').send_keys('threestarsgenius')
# click on search submit button
@driver.find_element(:xpath => '//*[@id="form-users-search"]/div/div').click()
# if after search we got threestarsgenius do next
if assert_equal('threestarsgenius', @driver.find_element(:xpath => '//*[@id="users-list-search"]/table/tbody/tr/td[1]/div/p[1]/a').text)
# click on threestarsgenius link to open profile
@driver.find_element(:xpath => '//*[@id="users-list-search"]/table/tbody/tr/td[1]/div/p[1]/a').click()
# check if username equal to ***genius
assert_equal('***genius', @driver.find_element(:class => 'user-name').text)
end
end
end

end

Результат виконання в консолі:
atech@atech:~$ ruby simpleTest.rb
Run options:
# Running tests:
.
Finished tests in 28.328018s, 0.0353 tests/s, 0.1059 assertions/s.
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips
Переглядів: 467 | Додав: dvi | Рейтинг: 0.0/0
Всього коментарів: 0
der="0" width="100%" cellspacing="1" cellpadding="2" class="commTable">
Ім'я *:Email:WWW:
Код *:
close