рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ - рдкреВрд░реНрдг рдСрдЯреЛрдЯреЗрд╕реНрдЯреНрд╕ рдХрд╛ рдкрде



рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!
рдпрд╣ рд╡рд┐рд╖рдп рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдкреНрд▓рд╕ 1 WAPStart рдЙрддреНрдкрд╛рдж рдХреЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рддрдм рд╕реЗ рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрд╣ рдкреИрдЯрд░реНрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЖрдо рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕рд░рд▓ рд░реАрдбрд┐рдВрдЧ рдФрд░ рд╕рдордЭ рдХреЗ рд╕рд╛рде рдЖрддреНрдо-рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпрд╛ рд╣реИ


рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдорд╛рд░реНрдЯ рдСрдЯреЛрдореИрдЯрд┐рдХ рдЪреЗрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрди рд╣реИред рдордгрд┐ рдкреГрд╖реНрда-рд╡рд╕реНрддреБ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд▓рдЪреАрд▓реЗ рдкреГрд╖реНрда рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╖рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдкреГрд╖реНрда рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рдордгрд┐ рд╡рд╢реАрд░-рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо-рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд░реВрдмреА рдФрд░ рд░рддреНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


RVM рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) 

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░реВрдмреА рдФрд░ рд░рддреНрдиреЛрдВ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 $ rvm reload $ rvm install ruby-1.9.3-p125 $ rvm gemset create page-object && rvm use ruby-1.9.3-p125@page-object $ gem install rake page-object 

рд╣реИрд▓реЛ, рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ!


рдкрдВрдЬреАрдХрд░рдг рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдЬреАрдХрд░рдг рдкреЗрдЬ рдмрдирд╛рдПрдБ - рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреЗрдЬрдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдкреГрд╖реНрда рдХрд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ:

 class RegistrationPage include PageObject page_url "http://www.passport.wapstart.ru/registration/" text_field(:email, :name => 'mail') text_field(:password, :id => 'hidden-password') select_list(:source, :name => 'informationSource') checkbox(:agreement, :name => 'agreement') button(:register, :name => "register") end 

рдкреГрд╖реНрда рдЫрд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ ... рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ:

 DEFAULT_DATA = { 'email' => 'habrahabr@gmail.com', 'password' => 'qwerty', 'source' => ' ,   WapStart' } 


рд╣рдо рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ:

 def default(data = {}) populate_page_with DEFAULT_DATA.merge(data) check_agreement register end 


рд╕рднреА рдореВрд▓ рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕реЗрд▓реЗрдирд┐рдпрдо-рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЙрд╕реЗ рдкреЗрдЬрдСрдмрдЬреЗрдХреНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рднреЗрдЬ рджреЗрдВ:

 browser = Selenium::WebDriver.for :ff registration_page = RegistrationPage.new(browser, true) registration_page.default 

рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдкреЗрдЬ рдХреЛ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдПрдБ:

 $ ruby tests/RegisterDefault.rb 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдСрдЯреЛрдЯреИрд╕реНрдЯреНрд╕ рдореЗрдВ рд╣рдо find_element рдФрд░ locators рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ, рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреЗрдЬ рдПрд▓рд┐рдореЗрдВрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЗ рддрд░реАрдХреЗ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ


рдПрдХреНрд╕реЗрд╕рд░реНрд╕ - рдкреЗрдЬрдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдкреЗрдЬ рдкрд░ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рдЬреЛрдбрд╝реЗ рдЧрдПред рддрд░реАрдХреЗ рд╡реЗрдм рдкреЗрдЬ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рдФрд░ рд╕реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ:


рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдкрдВрдЬреАрдХрд░рдг рдкреГрд╖реНрда рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 require 'page-object' require 'selenium/webdriver' class RegistrationPage include PageObject page_url "http://www.passport.wapstart.ru/registration/" DEFAULT_DATA = { 'email' => 'habrahabr@gmail.com', 'password' => 'qwerty', 'source' => ' ,   WapStart' } text_field(:email, :name => 'mail') text_field(:password, :id => 'hidden-password') checkbox(:showPassword, :id => 'showPassword') select_list(:source, :name => 'informationSource') text_field(:fio, :name => 'fio') text_field(:phone, :name => 'phone') select_list(:purpose, :name => 'registrationPurpose') checkbox(:haveCode, :id => 'havePartnerCode') text_field(:code, :id => 'plus1PartnerCode') checkbox(:agreement, :name => 'agreement') button(:register, :name => "register") # Exception span(:errorCode, :xpath => "//form[@id='registrationForm']/table/tbody/tr[9]/td[2]/span/span[2]") def default(data = {}) populate_page_with DEFAULT_DATA.merge(data) check_agreement register end end 

рд╕рд╣рдмрджреНрдз рдХреЛрдб рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдЙрджрд╛рд╣рд░рдг:
 describe "RegisterUser" do let(:browser) { @browser ||= Selenium::WebDriver.for :ff } #Initialize new instance of Browser(driver) it "InvalidCode" do page = RegistrationPage.new(browser, true) page.email = 'habrahabr@gmail.com' page.password = 'qwerty' page.source = ' ,   WapStart' page.check_haveCode page.code = 12345678 page.check_agreement page.register page.errorCode?.should be_true end after { browser.close } end 

GitHub рдкрд░ рдЙрджрд╛рд╣рд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
 $ git clone git@github.com:ivaravko/pageobject-example.git $ cd pageobject-example/ pageobject-example$ rake 

рдПрдХ рдкреГрд╖реНрда рдХреЛ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рд╕реЗ рдЦреЛрд▓рдирд╛


рдПрдХ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рдкреЗрдЬ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдкрд░рд╕реНрдкрд░ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реЗрд╢рди рдХреНрд▓рд╛рд╕ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ - LoginPage.new (рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдЯреНрд░реВ) рдореЗрдВ рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
 def default(data = {}) populate_page_with DEFAULT_DATA.merge(data) check_agreement register LoginPage.new(browser, true) end 

Ivaravko рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛

рд╕рдВрджрд░реНрдн

рдордгрд┐ рд▓реЗрдЦрдХ рдХрд╛ рдмреНрд▓реЙрдЧ
GitHub рдкреЗрдЬ
рдкреНрд░рд▓реЗрдЦрди

Source: https://habr.com/ru/post/In138674/


All Articles