如何用水豚填写日期时间本地字段?

ror*_*ler 3 ruby rspec capybara

我正在使用 Cocoon 添加记录。ID 看起来像workshop_instance_sessions_attributes_1477654140_start_time. 目前,我正在遍历 DOM 并获取动态生成的 ID(这很好用),这样我就可以使用它们来引用要填写的输入。我已经尝试了很多东西(许多在控制台中工作),但似乎仍然无法得到工作规范。下面是我尝试过的一些事情(first是保存 id 的变量,@time基本上是 Time.now,随着块的执行而递增)。

在控制台中工作:

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"))

这些都已经在一个内部块中(我遇到的一个常见问题),我知道它工作正常,因为第一个变量被正确设置。

作为参考,我的 html 看起来像这样:

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

任何有关如何使该规范发挥作用的指示将不胜感激。

小智 8

根据此处的Capybara 发行说明:

Selenium 驱动程序在填写日期/时间/日期时间本地输入时支持日期/时间

所以回答你的问题:

fill_in first, with: Time.new(2018, 01, 02, 12)
Run Code Online (Sandbox Code Playgroud)


Tho*_*ole 7

这将根据所使用的驱动程序/浏览器而有所不同。假设您将 selenium-webdriver 与 chrome 一起使用,您需要设置在控件中输入的键,因此要设置 2000 年 12 月 13 日@ 3:15 PM,您需要执行以下操作

fill_in first, with: "12132000\t0315p"
Run Code Online (Sandbox Code Playgroud)