模糊匹配,发现2个元素匹配css,如何到达第二个?

时间:2015-11-15 23:05:14

标签: css selenium-webdriver capybara

我在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' ?

1 个答案:

答案 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的结果。