2016-09-02 5 views
0

なぜ私は入力フィールドにclearできないのか分かりません。入力フィールドのクリア:#<Watir :: Input:XYZ>(NoMethodError)の定義されていないメソッド 'clear'

のPageObject

element(:test_input_field) { |b| b.input(class: "search-field") } 

def set_search_value(search_entry) 
    test_input_field.when_present.clear 
    test_input_field.when_present.set(search_entry) 
end 

Step_file

page.set_search_value(search_entry) 

出力

undefined method `clear' for #'<'Watir::Input:0x00000003980d20'>' (NoMethodError) 
+0

:それはあなたが使用しているページオブジェクトライブラリに依存する場合がありますが、私はあなたができる期待します"と試してみてください。 –

+1

kk yea true、しかし私にとってなぜクリアと入力が一緒には機能しないのですか? – Becks303

+0

これは既にジャスティン・コウが答えています。答えをたどる必要があります.. :) –

答えて

1

clear(およびset)メソッドは、汎用入力要素、つまりWatir::Inputには定義されていません。

コードを機能させるには、inputをより具体的なタイプ(おそらくテキストフィールド)に変換する必要があります。 @SaurabhGaurが言及したよう

test_input_field.when_present.to_subtype.clear 
test_input_field.when_present.to_subtype.set(search_entry) 

setはすでに既存の値をクリアすることによって起動するので、あなただけ行うことができます:

test_input_field.when_present.to_subtype.set(search_entry) 

inputタイプの変更がない限り、それはあなたがこのto_subtypeメソッドを使用して行うことができますエレメントをtext_fieldと定義する方が意味がありますので、変換する必要はありません。また、新しい値を設定する前に古い値をクリア設定されているので、この行を削除することができます `test_input_field.when_present.clear私が思う

element(:test_input_field) { |b| b.text_field(class: "search-field") } 

def set_search_value(search_entry) 
    test_input_field.when_present.clear 
    test_input_field.when_present.set(search_entry) 
end 
+0

聞いたことがありません。 to_subtype、興味深い。 いや、text_fieldはうまくやっていました。 .clearは一般的な入力では動作しないようです。 thx – Becks303

+1

'clear'と' set'の問題は、入力タイプに基づいて機能的に異なることをする必要があることです。たとえば、チェックボックスをオフにすると、テキストフィールドをクリアするとテキストを選択して削除ボタンを押すというクリックが必要になります。その結果、一般的な入力ではなく、特定の入力タイプのメソッドを実装するのが理にかなっています。 –

+0

よろしくお願いします。 – Becks303

関連する問題