Watir:查找包含特定孩子的父div

时间:2014-04-02 16:07:56

标签: ruby webdriver watir

我有以下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;?

1 个答案:

答案 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? }