使用 Selenium/Capybara 的区域设置之间的 HTML 日期/时间输入格式“yyyy-MM-dd”与“MM/dd/yyyy”

Kev*_*tre 6 javascript selenium capybara selenium-chromedriver

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
Run Code Online (Sandbox Code Playgroud)

是否可以配置 Capybara / Selenium 以使用特定的区域设置/格式进行输入?或者,是否可以通过 JS 确定输入的格式并替换为 a page.execute_script(设置为input.val(new Date(2016, 12, 31))不起作用)?

Tho*_*ole 2

输入所需的区域设置/格式不是由 Capybara/Selenium 设置的,而是由运行的浏览器设置的(Capybara/Selenium 实际上并不知道这是他们正在填写的日期框,他们只是按顺序发送击键你告诉他们)。如果您只需要处理几个区域设置,一个想法是使用获取规范开头evaluate_script的值,然后根据该值更改发送日期的格式。navigator.language