2016-04-04 5 views
0

Selenyum web sürücüsünü ruby ​​ve page object modeliyle öğreniyorum. Test kodum:Ruby Selenium/Sayfa Nesne Modeli - tarayıcıyı başlatılıyor

Sınamayı çalıştırdığımda, sayfanın yüklenmesine bağlı olan ancak doğru bağlantıya yönlendirilmeyen bir öğeyi bulamıyorum. Genellikle driver.gets kullanırım ama sayfa nesne modeli ile çalışmasını sağlayamaz mıyım?

Sayfa nesne modeli ile
require 'rubygems' 
require 'selenium-webdriver' 
require 'page-object' 




class ContactDemoQa 
    include PageObject 



text_field(:name, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(2) > span > input') 
text_field(:email, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(3) > span > input') 
text_field(:subject, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(4) > span > input') 
text_area(:messages, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(5) > span > textarea') 
    button(:send, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(6) > input') 


    def contact_method(name, email, subject, message) 

    self.name = name 
    self.email = email 
    self.subject = subject 
    self.message = message 
    send 
    end 
    browser = 'http://demoqa.com/contact/' 
    browser = Selenium::WebDriver.for :firefox 
    contact_demo_qa = ContactDemoQa.new(browser) 

    contact_demo_qa.contact_method 'rob', '[email protected]', 'test', 'Yellow' 

end 

, Sayfa nesneleri ve bir sınıfta yöntemleri var ve sonra başka bir sınıfta aşağıdaki kodu kullanarak yöntemi çağırmak içindir? Bunu yanlış yapıyoruz

browser = 'http://demoqa.com/contact/' 
    browser = Selenium::WebDriver.for :firefox 
    contact_demo_qa = ContactDemoQa.new(browser) 

    contact_demo_qa.contact_method 'rob', '[email protected]', 'test', 'Yellow' 
+0

Soruyor musun? Yoksa şoförün nerede çağrılacağını mı soruyorsun? –

+0

Son 4 satırın başka bir sınıfta olması gerektiğini soruyorum evet. Ayrıca, bu sınıfı çalıştırdığımda, sayfa nesnelerine doğru URL’yi yönlendirmediği için bildirim yapılır. URL'yi kaçırıyorum, ancak sayfa nesne modelini kullanarak doğru URL'ye nasıl yönlendirileceğini bilmiyorum. Genellikle java @JustinKo – Speedychuck

cevap

1

, sayfa nesne modeli, bu PageObject sınıf içinde yer almalıdır o sayfadaki yürütmek URL Bulma ve yöntemleri anlamına herşey sayfasına ait demektir, PageObject sınıfı kullanıcı arayüzünüzde görünen bir sayfa demektir.

Uygulamanızda, sorun, sayfa içindeki sayfaya (son 4 satır) ait olmayan şeyler koymanızdır, ayrı olarak çalıştırılmalıdır. Ardından İletişim sayfası böyle olmalıdır:

#contact_page.rb 

require 'page-object' 

class ContactPage 
    include PageObject 

    text_field(:name, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(2) > span > input') 
    text_field(:email, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(3) > span > input') 
    text_field(:subject, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(4) > span > input') 
    text_area(:messages, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(5) > span > textarea') 
    button(:send, :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(6) > input') 

    page_url 'http://demoqa.com/contact/' 

    def contact_method(name, email, subject, message) 
    self.name = name 
    self.email = email 
    self.subject = subject 
    self.message = message 
    send 
    end 
end 

testi infaz böyle tanımlamak gerekir: bu son 4 satır `ContactDemoQa` sınıfında olup olmaması gerektiği takdirde

#testdemo.rb 

require 'selenium-webdriver' 
require 'page-object/page_factory' 
require_relative 'contact_page.rb' 

include PageObject::PageFactory 

#--set up-- 
@browser = Selenium::WebDriver.for :firefox 
#---------- 

#test execution 
visit(ContactPage) 
on(ContactPage).contact_method('rob', '[email protected]', 'test', 'Yellow') 
+0

içinde driver.gets (http) kullanıyorum. Bu noktada ne anlama geliyor, bir nesnedeki nesnelere ve yöntemlere sahip olmak ve bunları test demo sınıfıyla çağırmak artık daha güvenilir hale geliyor. Başka sayfa nesnesi örnekleriniz var mı? – Speedychuck