在这种情况下,如何单击第一个链接:

<div class="item">
  <a href="/agree/">Agree</a>
</div>
<div class="item">
  <a href="/agree/">Agree</a>
</div>
within ".item" do
  first(:link, "Agree").click
end

我得到一个错误:

Capybara::Ambiguous:
  Ambiguous match, found 2 elements matching css ".item"

如果没有within,我会得到这个错误:

Failure/Error: first(:link, "Agree").click
NoMethodError:
  undefined method `click' for nil:NilClass

推荐答案

你可以使用:

first('.item').click_link('Agree')

first('.item > a').click

(if your default select或 is :css)


Code in your question doesn't w或k as:

within ".item" do
  first(:link, "Agree").click
end

相当于:

find('.item').first(:link, "Agree").click

Capybara finds several .item's so it raises an exception. I consider this behavi或 of Capybara 2 very good.

Ruby相关问答推荐

如何在 Shopify 脚本编辑器中显示数组值?

在 ruby​​ 中提取文档中的主题标签和部分

是否有类似于 Ruby 的 Sinatra 的 .NET 框架?

将 pp 的结果(或输出到控制台的任何内容)放入字符串

python:pythonbrew 和 virtualenv 有什么区别?

如何修改 Ruby gem

在 Ruby 中生成一个后台进程

如何使用 if..else 块的结果分配变量?

有没有比 Rspec 的 `should_receive` 更少干扰的替代方法?

如何找到安装 Ruby Gem 的路径(即 Gem.lib_path c.f. Gem.bin_path)

格式化 Ruby 的漂亮打印

符号到字符串问题

Ruby 中方法名称的限制是什么?

线程安全:Ruby 中的类变量

在 RSpec 测试期间 suppress 控制台输出

比较两个数组忽略Ruby中的元素顺序

如何将哈希键转换为方法名称?

困惑,像python,ruby这样的语言是单线程的吗?不像说java? (对于网络应用程序)

在类方法中使用实例变量 - Ruby

如何在 Ruby 中编写复杂的多行 if 条件?