Chrome/Selenium 似乎在语言环境之间对某些输入类型具有不同的格式。例如,日期选择器(即 input type="date"
)的格式为 mm/dd/yyyy
(美国)和 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 确定输入的格式并替换为 page.execute_script
(设置为 input.val(new Date(2016, 12, 31))
不起作用)?
最佳答案
输入所需的语言环境/格式不是由 Capybara/Selenium 设置的,它是由运行的浏览器设置的(Capybara/Selenium 实际上不知道他们正在填写的是日期框,他们只是发送击键按照你告诉他们的顺序)。如果您只需要处理几个语言环境,一个想法是使用 evaluate_script
在规范的开头获取 navigator.language
的值,然后更改您基于此发送日期的格式。
关于javascript - HTML 日期/时间输入格式 'yyyy-MM-dd' 与 'MM/dd/yyyy' 在区域设置与 Selenium/Capybara 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599944/