我正在使用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">
非常感谢任何有关如何使此规范发挥作用的指示。
答案 0 :(得分:3)
这将根据使用的驱动程序/浏览器而有所不同。假设您正在使用带有chrome的selenium-webdriver,您需要设置要在控件中输入的键,以便设置12月13日2000 @ 3:15 PM您需要执行
fill_in first, with: "12132000\t0315p"
答案 1 :(得分:2)
根据Capybara发行说明here:
Selenium驱动程序在填写日期/时间/本地时间的输入时支持日期/时间
所以回答您的问题:
fill_in first, with: Time.new(2018, 01, 02, 12)