【问题标题】:Capybara: Finding a second checkbox which is identical to the firstCapybara:找到与第一个相同的第二个复选框
【发布时间】:2015-03-25 12:13:16
【问题描述】:

我正在为视图文件编写测试。我有一个带有两个复选框的页面,允许用户选择两个不同列表中的所有项目。但是,复选框是部分的一部分,因此是相同的。我设法检查了第一个使用:

first(:checkbox, "Select all").click

但我无法检查第二个。我尝试用lastsecond 替换first,但无济于事。 我想我可能需要使用find 选择器,但我也在为此苦苦挣扎。非常感谢任何帮助。 谢谢

更新

看来这实际上是另一个问题。我认为任何影响其他复选框的复选框在被 Capybara“选中”时都不会按预期工作。因此,下面的当前答案在他们确实选中复选框的意义上起作用,但没有发生预期的行为,即链接到它们的复选框没有被“选中”。不过我可能错了。

【问题讨论】:

  • 你能给每个复选框一个ID吗?这将使事情变得容易得多。
  • 我正在处理不是我创建的视图文件,我认为我无法编辑。他们没有身份证,他们有相同的班级。我想我将不得不向他们添加 ID 来解决这个问题。不过感谢您的帮助。

标签: ruby-on-rails ruby rspec tdd capybara


【解决方案1】:

试试这个

# find the second checkbox
find('input[type="checkbox"]:nth-child(2)').click

【讨论】:

  • 抱歉,但这似乎不起作用:Failure/Error: find('input[type="checkbox"]:nth-child(1)').clickCapybara::ElementNotFound:Unable to find css "input[type=\"checkbox\"]:nth-child(1)"
【解决方案2】:

您可以使用查找全部

all('input[type="checkbox"]', :text => 'Select all')[1].click

【讨论】:

  • 抱歉,但这似乎不起作用:Failure/Error: all('input[type="checkbox"]', :text => 'Select all')[1].clickNoMethodError:undefined method `click' for nil:NilClass'
  • @HatStephensWork - Nafaa 和我完全猜测如何识别 HTML 中的复选框。这可能是完全不同的东西。您需要检查并查看您的复选框是否有某种可以实际点击的 ID 或 div。
【解决方案3】:

哎呀。原来这是一个 JS 问题,而不是 Capybara macthers!不过感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2018-01-23
    相关资源
    最近更新 更多