Вступ 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
|