2016-10-28 18 views
0

私はCocoonを使ってレコードを追加しています。 IDはworkshop_instance_sessions_attributes_1477654140_start_timeのようになります。現時点では、DOMを走査して動的に生成されたIDを取得しています(これはうまくいきます)ので、入力を参照して記入することができます。動作する仕様。以下は私が試したことの選択です(firstはidを保持する変数です。@timeは基本的にはブロックとして実行されるTime.nowです)。コンソールでdatetime-localフィールドをcapybaraで埋め込む方法は?

作品:

page.evaluate_script("document.getElementById('#{first}').value = '#{@time.strftime('%Y-%m-%eT%H:%M')}'")

page.evaluate_script("$('##{first}').val('#{@time.strftime("%Y-%m-%eT%H:%M")}')")

はコンソールでは動作しません:

fill_in first, with: @time.strftime("%Y-%m-%eT%H:%M")

find("##{first}").set(@time.strftime("%Y-%m-%eT%H:%M"))

これらはすべて、最初に変数が正しく設定されているので、正しく動作していることがわかっているブロック内に既にあります(私がよく遭遇する共通の問題です)。

<input class="form-control" type="datetime-local" name="workshop_instance[sessions_attributes][1477655024][start_time]" id="workshop_instance_sessions_attributes_1477655024_start_time">

この仕様は、動作するように取得する方法上の任意のポインタがはるかに高く評価されるだろう:

参考までに私のHTMLは次のようになります。

+0

を行う必要があるだろうと仮定すると、あなたの実験を行いました'fill_in'の代わりに' select'を使っていますか? – ndn

+0

はいとはい。私は、これはちょうど日付フィールドで動作しています。それは一緒に日付と時間の問題であるようです。 – rorykoehler

+1

[PRを開く](https://github.com/jnicklas/capybara)をお勧めします。 Capybaraが 'datetime-local' ATMをサポートしていないのは悲しいことですが、間違いなく可能です。 – ndn

答えて

1

これは、使用されるドライバ/ブラウザに応じて異なります。あなたはとても15:15 @ 12月13日2000を設定するコントロールに入力するように打つことになるキーを設定する必要がクロムとセレンwebdriverをを使用しているあなたは

fill_in first, with: "12132000\t0315p" 
+0

これは正しい答えだと思います。私はカピバラがページを評価してフィールドを選択するときにカピバラが "見える"かどうかはわかりませんが、ほぼすべてのブラウザで日時フィールドは2つの別個のフィールドとしてレンダリングされ、これはjavascriptの '.val()'設定がなぜ機能するのかを説明しますが、手動で(capybaraの試みのように)埋め込みを行うのではありません。 – Oranges13

関連する問題