javascript - HTML 日期/时间输入格式 'yyyy-MM-dd' 与 'MM/dd/yyyy' 在区域设置与 Selenium/Capybara 之间

标签 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

是否可以将 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/

相关文章:

javascript - 如何使用chrome打包的应用程序在子窗口中写入内容?

JavaScript 游戏只发射一束激光

java - Selenium implicitlyWait 不工作?

java - 使用 selenium xpath 动态查找前一个兄弟元素

javascript - 将秒表时间转换为秒

javascript - 背景 : none - how to enable with jQuery?

python - 如何从 div 中仅获取姓名和联系电话?

ruby-on-rails - Rake 默认命名空间运行测试

ruby-on-rails - Capybara 可以与 Turbolinks 一起玩吗?

ruby-on-rails - 将 RSpec 的 `all` 匹配器与 Capybara 的 `have_css` 匹配器一起使用时出错