我有以下HTML结构:
<div class="items">
...some complex structure with many sub divs ...
<div id="specificchild"></div>
</div>
<div class="items>
...
</div>
我需要使用包含&#34; specificchild&#34; -DIV的类项目到达DIV。 问题是特定的孩子与父母div&#34; item&#34;没有直接关系。而且它们之间的结构并不总是一样的。所以
browser.div(:id => "specificchild").parent
不会工作。
是否有可能选择div而不循环遍历所有div并询问它是否包含&#34; specificchild&#34;?
答案 0 :(得分:3)
解决方案1 - Xpath
在这种情况下,我认为最简单的解决方案是使用xpath:
browser.div(:xpath, '//div[@class="items"][.//div[@id="specificchild"]]')
解决方案2 - 迭代直到父级
或者,您可以像通常那样找到特定的元素元素。然后迭代项目的父母,直到有一个类&#39;项目&#39;找到了:
item = browser.div(:id => 'specificchild')
item = item.parent until item.class_name == 'items'
解决方案3 - 使用查找
另一个选择是获取带有类项的div的集合,然后找到具有特定子项的div。它只会遍历div,直到找到所需的div。
browser.divs(:class => 'items').find{ |item| item.div(:id => 'specificchild').exists? }