升级到Capybara 2.0后如何点击项目列表中的第一个链接?
如何在这种情况下点击第一个链接:
<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 
(如果你的默认select器是:CSS)
您的问题中的代码不起作用:
 within ".item" do first(:link, "Agree").click end 
相当于:
 find('.item').first(:link, "Agree").click 
 水豚发现几个.item的,所以它引发了一个例外。 我认为水豚2的这种行为非常好。 
尝试以下操作:
 within ".item" do click_link("Agree", :match => :first) end 
资料来源:
http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Actions#click_link-instance_method https://github.com/jnicklas/capybara#strategy
这个措词也起作用:
 within first(".item") do click_link "Agree" end 
  Xpath可以处理元素。 我还不是很好,但有点像//div[@class='active'][1]/a 
这可能会或可能不会工作,但重点是,XPath可以解决一系列的匹配,并拉出一个特定的。 你应该能够匹配这个。
来自我的一个项目的工作示例:
在page.find(“div.panel”,text:/ Proposals /)中做
  在page.find('tr',text:/ Foo /)中做
     page.should have_xpath('td [3]',text:@today)
  结束
结束
由于first()并不总是等待,所以这可能是有用的:
 expect(page).to have_css("selector") first("selector").click 
简单的你可以使用:
 $('.item').find('a').first().click();