Techioz Blog

カピバラで日時ローカルフィールドを入力するにはどうすればよいですか?

概要

Cocoonを使用してレコードを追加しています。 ID は、 Workshop_instance_sessions_attributes_1477654140_start_time のようになります。現時点では、DOM を走査して動的に生成された ID を取得しており (これは正常に動作します)、入力を参照して入力できるようにします。 多くのこと (コンソールで機能するもの) を試してみましたが、まだ取得できないようです。動作する仕様。以下は私が試したことの一部です(最初はIDを保持する変数であり、@timeは基本的にブロックの実行につれて増加するTime.nowです)。

コンソールで動作します:

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

page.evaluate_script(“.val(‘#{@time.strftime(“%Y-%m-%eT%H:%M”)}’)”)

コンソールでは機能しません:

最初に fill_in を付けます: @time.strftime(“%Y-%m-%eT%H:%M”)

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

これらはすべて、最初の変数が正しく設定されているため、正しく動作していることがわかっている inside ブロック (私が遭遇する一般的な問題) 内にすでに存在しています。

参考として、私のHTMLは次のようになります。

この仕様を機能させる方法についてのアドバイスをいただければ幸いです。

解決策

Capybara のリリースノートによると、次のようになります。

したがって、あなたの質問に答えるには:

fill_in first, with: Time.new(2018, 01, 02, 12)