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

How to fill in a datetime field with capybara?

我发现了这个类似的问题 How to fill in a datetime-local field with capybara?,并且此线程中的唯一答案无效。所以我决定打开这个问题。似乎没有关于此的文档或教程。有什么解决办法吗?这将是一个很大的帮助!

据我了解,您需要填写日期时间格式的字符串表示形式

此类日期的示例是

1990-12-31T23:59:60Z

1996-12-19T16:39:57-08:00

类似

fill_in datetimeinput, with: "1990-12-31T23:59:60Z"

应该有效(希望如此!)

不同的浏览器接受的用于设置日期时间输入字段的键是不同的,但是如果您将 selenium 与 chrome 一起使用并且您实际上是在尝试填充可见的 <input type="datetime-local"> 元素,如你的问题陈述,那么你链接到的问题的答案应该有效 - 这是一个显示它有效的要点 - https://gist.github.com/twalpole/a541746b354afde8e82fa89a35a9b2da

该答案的重要部分是您发送的字符串的格式,因为它需要匹配浏览器期望设置该输入的键(to_json 与该格式不匹配)

因此,在您想要设置 DateTime.current 的情况下,它应该类似于

fill_in 'id/name/label of input', with: DateTime.current.strftime("%m%d%Y\t%I%M%P")

如果这对您不起作用,那么很可能您实际上并没有尝试填充可见的 <input type="datetime-local"> 字段(也许您正在使用某种 JS 小部件 replaces/hides input???) 并且您需要指定您尝试填写问题的确切 HTML。