我在Capybara遇到了模糊匹配问题。该页面不提供' ID"确定哪一个是哪个。
我正在使用功能。
within('.tile.tile-animation.animation-left.animation-visible.animated') do
#some code in here
end
我使用了:match选项解决了我的第一个问题。
within('.tile.tile-animation.animation-left.animation-visible.animated', :match => :first) do
#some code in here
end
问题是如何进入SECOND css' .tile.tile-animation.animation-left.animation-visible.animated' ?
答案 0 :(得分:2)
这取决于html - 一个简单的解决方案是
within(all('.tile.tile-animated.animation-left.animation-visible.animated')[1]) do
# some code in here
end
将覆盖页面上的第二个匹配元素,但如果页面发生更改则无法自动重新加载,并且不会等待元素出现。如果你需要等待至少两个元素出现,你可以做
within(all('.tile.tile-animated.animation-left.animation-visible.animated', minimum: 2)[1]) do
....
会等待一段时间,至少有2个元素出现在页面上,但如果页面发生变化,仍然无法自动重新加载。如果您需要能够在动态变化的页面上自动重新加载,则需要为该元素编写唯一的选择器(而不是索引到#all
的结果。