Javascript HTML日期/时间输入格式';yyyy-MM-dd';vs';年月日';含硒/水豚的地区之间

Javascript HTML日期/时间输入格式';yyyy-MM-dd';vs';年月日';含硒/水豚的地区之间,javascript,selenium,capybara,selenium-chromedriver,Javascript,Selenium,Capybara,Selenium Chromedriver,Chrome/Selenium对于不同地区的某些输入类型似乎有不同的格式。例如,美国的日期选择器(即输入类型=“日期”)格式为mm/dd/yyyyy,加拿大的格式为yyyy-mm-dd。这使得编写在不同地区的机器上工作的规范变得困难。例如: find("input[type='date']").set("12/31/2016") # works for Canada, fails for America find("input[type='date']").set("2017-12-31") #

Chrome/Selenium对于不同地区的某些输入类型似乎有不同的格式。例如,美国的日期选择器(即输入类型=“日期”)格式为
mm/dd/yyyyy
,加拿大的格式为
yyyy-mm-dd
。这使得编写在不同地区的机器上工作的规范变得困难。例如:

find("input[type='date']").set("12/31/2016") # works for Canada, fails for America
find("input[type='date']").set("2017-12-31") # works for America, fails for Canada

是否可以将Capybara/Selenium配置为对输入使用特定的区域设置/格式?或者,是否可以通过JS确定输入的格式并替换为
页面。执行脚本
(设置为
input.val(新日期(2016年12月31日))
不起作用)?

输入所需的区域设置/格式不是由Capybara/Selenium设置的,而是由运行的浏览器设置的(水豚/硒实际上并不知道他们填写的是一个日期框,他们只是按照你告诉他们的顺序发送击键)。如果您只需要处理几个地区,一个想法是使用
evaluate\u script
在规范开始时获取
navigator.language
的值,然后在此基础上更改发送日期的格式。

javascript中的日期非常混乱,我已经习惯使用时间戳。这个主题有帮助吗?Un幸运的是,navigator.language似乎与输入的格式没有直接对应。在加拿大,我得到了“en US”。@KevinSylvestre您是使用标准HTML日期输入,还是使用JS小部件?使用标准HTML输入(type=“date”)。