Ruby 水豚-查找Id为&;的元素;文本或使用多个属性

Ruby 水豚-查找Id为&;的元素;文本或使用多个属性,ruby,capybara,Ruby,Capybara,我有两个相同的id 2和不同的文本链接 <li class=""> <a href="#" id="2">2</a> </li> <li class=""> <a href="#" id="2">Next</a> </li> 但是它不起作用,不知道如何找到id=“2”和text=“2”的元素 我犯了一个错误 Capybara::Ambiguous: Ambiguous match, found

我有两个相同的id 2和不同的文本链接

<li class=""> 
<a href="#" id="2">2</a>
</li>

<li class="">
<a href="#" id="2">Next</a>
</li>
但是它不起作用,不知道如何找到id=“2”和text=“2”的元素

我犯了一个错误

Capybara::Ambiguous: Ambiguous match, found 2 elements matching id "2"

要获取id为“2”的最后一个链接,请执行以下操作:

要获取id为“2”且文本为“Next”的第一个链接:

要获取文本为“下一步”的第一个链接:


修复你的html——根据规范id必须是唯一的。你的第二个例子可能更容易阅读,写为
page.find(:css,[@id=“2”]”,text:'Next')
谢谢Florent,为什么我们要用.last()作为page.find(:xpath,//a[@id='2'][text()='Next'])。last()不会带来唯一的结果吗?@Achyuth Pydmarri,这是一个复制/复制错误。感谢Tom,我是新手,想了解:css的用法?@AchyuthPydmarri:css只是声明以下字符串是一个css选择器(与:xpath或其他内容相反)。默认情况下,Capybara.default_selector==:css,因此除非您对其进行了更改,否则
find(:css,“#id”)
find('#id')
Capybara::Ambiguous: Ambiguous match, found 2 elements matching id "2"
page.all(:css, "a[id='2']").last()
page.find(:xpath, "//a[@id='2'][text()='Next']")
page.find_link("Next")