【问题标题】:How to target localized button with RSpec and Capybara?如何使用 RSpec 和 Capybara 定位本地化按钮?
【发布时间】:2013-02-22 16:41:02
【问题描述】:

我正在使用 RSpec 和 Capybara 进行 Ruby on Rails 测试。

我的 Rails 应用已本地化为多种不同的语言(英语、德语等)。

例如,我希望 Capybara 提交一个表单,但显然不能使用它的值来选择它,因为值会根据所选择的语言而变化。

这在我的情况下不起作用:

click_button("Create my account")

有没有什么方法可以用 Capybara 简单地选择页面上的第一个 input[type="submit"] 元素?

感谢您的帮助。

【问题讨论】:

  • 顺便说一句:使用 ID 是可行的方法...但是,通常测试单击按钮的功能不应受到不同本地化的影响。我总是针对默认语言环境标签创建测试......在我的情况下是“en”。

标签: ruby-on-rails ruby-on-rails-3 rspec capybara rspec2


【解决方案1】:

您可以为按钮分配一个 id 并单击它

click_button("button_id")

来源:http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Actions#click_button-instance_method

【讨论】:

  • 谢谢。我最终使用了这个解决方案。
【解决方案2】:

我会说:

find('input[type="submit"]').first.click

但是给它一个类或一个id,它更安全。

【讨论】:

  • 谢谢。我无法让它工作,最终使用了一个 id。
  • @Tintin81 工作版本实际上是find('input[type="submit"]').click 或者使用与上述相同的方法all('input[type="submit"]').first.click
【解决方案3】:

简单的方法:

first('input[type="submit"]').click

【讨论】:

    【解决方案4】:

    您还可以使用 css 选择器缩小@apneadiving 的答案范围:

    find("#my_form input[type='submit']").click

    这样您就不必修改 HTML 来匹配您的测试。

    【讨论】:

      猜你喜欢
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      相关资源
      最近更新 更多