2016-04-27 68 views
2

我是PageObject的新手,但我之前使用過Watir。我有一個登錄類如何訪問PageObject元素的Watir屬性?

class Login 
    include PageObject 

    page_url 'http://localhost:9090/#/login' 

    button(:login, :id => 'login-btn') 
end 

我想檢查按鈕是否啓用。通常情況下,我只是用一些調用它的Watir像

@browser.button(:id => 'login-btn').enabled? 

當我嘗試使用登錄PageObject別名,我得到一個錯誤。

on(Login).login.enabled? 
> NoMethodError: undefined method 'enabled?' for nil:NilClass 

是否有一個PageObject味的方式來訪問的Watir屬性,如啓用,或者我需要通過@browser變量手動查找元素並檢查它呀?這似乎打敗了使用PageObject開始的目的。

+0

'test-factory'gem允許你想要做的事情,因爲它圍繞watir進行了更多優化,而不是試圖同時支持Watir和Selenium用戶。如果你剛剛開始,你可能想要評估它作爲頁面對象寶石的替代品。如果你已經編寫了很多代碼,那麼中間碼流馬匹可能不值得轉換 –

回答

3

頁面對象訪問器方法(例如button)將創建一個<name>_element方法,該方法返回PageObject::Elements::Element。通過這個對象,你可以檢查元素的各個方面。

on(Login).login_element.enabled? 

注意,PageObject::Elements::ElementWatir::Element周圍的包裝:

對於這種情況,該按鈕狀態可以進行檢查。這意味着您在Watir中使用的方法可能無法使用(即未實施)。如果遇到這種情況,可以使用element方法直接訪問底層的Watir::Element

on(Login).login_element.element.enabled? 
+0

感謝您的幫助! – Shwheelz