Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Watir:查找包含特定子级的父div_Ruby_Webdriver_Watir - Fatal编程技术网

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

Ruby Watir:查找包含特定子级的父div,ruby,webdriver,watir,Ruby,Webdriver,Watir,我有以下HTML结构: <div class="items"> ...some complex structure with many sub divs ... <div id="specificchild"></div> </div> <div class="items> ... </div> 行不通 有没有可能选择div而不遍历所有div并询问它是否包含“specif

我有以下HTML结构:

<div class="items">
  ...some complex structure with many sub divs ...
                     <div id="specificchild"></div>
</div>
<div class="items>
  ... 
</div>
行不通


有没有可能选择div而不遍历所有div并询问它是否包含“specificchild”?

解决方案1-Xpath

在这种情况下,我认为最简单的解决方案是使用xpath:

browser.div(:xpath, '//div[@class="items"][.//div[@id="specificchild"]]')
解决方案2-迭代到父级

或者,您可以像通常一样找到specificchild元素。然后迭代父项,直到找到具有类“items”的父项:

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

我想避免使用XPath,因为Watir的设计没有XPath表达式,但我想我还是会坚持使用它。非常感谢。
browser.divs(:class => 'items').find{ |item| item.div(:id => 'specificchild').exists? }