在这种情况下如何单击第一个链接:
<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
发布于 2014-08-13 02:41:37
这种说法也适用:
within first(".item") do
click_link "Agree"
end
发布于 2019-06-18 17:30:50
这些解决方案中的大多数都不会使用Capybara出色的等待功能
最好按照此链接的建议进行操作:
不好:
first(".active").click
如果页面上还没有.active元素,first将返回nil,单击将失败。
好:
如果你想确保只有一个
find(".active").click
如果您只想要第一个元素
find(".active", match: :first).click
水豚将等待元素出现,然后再尝试单击。
请注意,match: :first
更脆弱,因为如果您引入匹配的新元素,它将静默地单击不同的元素。
发布于 2016-09-04 07:50:31
由于first()并不总是等待,也许这是有用的:
expect(page).to have_css("selector")
first("selector").click
https://stackoverflow.com/questions/14513377
复制相似问题