2017-07-27 12 views
0

私は選択ボックスとテキストフィールドを含むフォームを持っています。capybaraを使用して動的フォームフィールドを塗る方法

テキストフィールドは、選択ボックスの選択に基づいて動的に表示されます。 selectboxの値が "Yes"の場合、テキストフィールドが表示され、その逆も同様です。 私はRSpecのテストを実行し、

select 'Yes', from: 'property[have_water_bills]' 

は、今私がテキストフィールド

fill_in 'property[irrigation_cycle_count]', with: 5 

に値を埋めたい「はい」を選択ボックスの値を埋めしかし、私は次のエラーを取得していています。

Capybara::ElementNotFound: 
    Unable to find field "property[irrigation_cycle_count]" 

つまり、capybaraは動的要素を見つけることができません。誰もがこれを修正する方法を知っていますか?

+0

の以下の部分を使用して動作するようになりました?。また、このテストがポルターガイストで実行されていることを確かめますか? –

+0

クリックイベントは、次のフィールドをトリガするために使用されます。はい、テストはPoltergeist – prajeesh

答えて

0

最後に、これは次のフィールド(変更、ぼかしなど)の表示をトリガするために使用されているどのようなイベントコード

page.execute_script("$('#have_water_bills').val('true').trigger('click')") 
+0

で実行されます。アプリをキーボードで使用できないのは間違いありませんか? –

1

ポラテジストは、選択からアイテムを選択するときにclickイベントを生成しません。オプションのfocus、選択の場合はchange、オプションの場合はblurが生成されます。これは、マウスを使用する代わりに、キーボードでオプションを選択した場合に似ています。あなたはおそらく、テキストフィールドをchangeイベントに表示するロジックを実行する必要があります。そうすれば、人々がマウスやキーボードを使用してページをナビゲートする場合に機能します。 changeイベントであなたの表示/非表示ロジックを実行する方が理にかなっています。なぜなら、それはあなたが実際に心配しているものでクリックではないからです。

関連する問題