2016-04-27 7 views
2

私はPageObjectを初めて使っていますが、以前はWatirを使っていました。私はログインクラスを持っていますPageObject要素のWatirプロパティにアクセスするにはどうすればよいですか?

class Login 
    include PageObject 

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

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

ボタンが有効かどうかをチェックしたいと思います。通常、私はちょうど私がログインのPageObjectエイリアスを使用しようとすると、私はエラーを取得する

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

ようなものでワチールでそれを呼び出すと思います。

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

などが有効、または私は手動で@browser変数を介して要素を検索し、そのようにチェックする必要がありますようワチールのプロパティにアクセスするためのPageObject風味の方法はありますか?これは、PageObjectを使用して開始する目的を無効にするようです。

+0

「テスト・ファクトリー」宝石は、あなたが上記のやりたい事のようなものが可能になります。始めているのであれば、それをページオブジェクト宝石の代わりに評価したいかもしれません。あなたはすでにコードをたくさん書いていて、馬の途中で馬を交換する価値がないのであれば –

答えて

3

ページオブジェクトアクセサメソッド(buttonなど)は、PageObject::Elements::Elementを返す<name>_elementメソッドを作成します。このオブジェクトを使用すると、要素のさまざまな側面を検査できます。 PageObject::Elements::ElementWatir::Elementのラッパーであることを

on(Login).login_element.enabled? 

注:このケースでは

は、ボタンの状態はで確認できます。つまり、Watirで使用したメソッドは使用できない(実装されていない)可能性があります。このような状況に陥った場合は、 elementメソッドを使用して、基礎となる Watir::Elementに直接アクセスできます。それはより多くの代わりにワチールとSeleniumユーザーの両方をサポートしようとしているのワチールの周りに最適化されていますよう

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

助けてくれてありがとう! – Shwheelz

関連する問題