Capybara:在page.all节点中查找元素

时间:2016-05-17 17:08:07

标签: rspec capybara

案例如下:页面上有n个面板。遍历每个面板:单击特定元素,然后查找仅在单击后显示的子元素文本。

我可以使用像.has_css?这样的方法,但这对我没有帮助。

显然,在这里使用find会很有帮助,但它不适用于Capybara :: Node :: Element

page.all(:css, panelCss).each do |panel|
    counter+=1
    if panel.has_css?(elemCss)
        Actions.c 'Yay! Found #'+counter.to_s
        res = panel.find(:css, elemCss).text #**should be replaced**
    end
end

据我记忆,过去我通过组合水豚和jquery做了同样的事情,但还没找到决定。谷歌搜索也没有帮助。

P.S。当然,我可以直接遍历可点击元素,点击一下,然后获取子元素的文本而不是遍历他们的父面板,但有两个原因:

  • 我需要它用于未来的代码
  • 点击后可能有多个子元素,所以看来我必须在page.all节点内搜索。

1 个答案:

答案 0 :(得分:1)

根据您的描述,它应该是

page.all(:css, panelCss).each do |panel|
  if panel.has_css?(elemToClickCss, wait: false) # assuming panels aren't dynamically loaded
    c = panel.find(:css, elemToClickCss)
    c.click
    res = c.find(:css, clickedObjectsChildCss).text
  end
end