案例如下:页面上有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。当然,我可以直接遍历可点击元素,点击一下,然后获取子元素的文本而不是遍历他们的父面板,但有两个原因:
答案 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