用HTML捕获直接的孩子

时间:2017-10-19 13:17:54

标签: ruby watir watir-webdriver

在Ruby 2.3.3中使用watir-webdriver

我需要从HTML下面找到所有Div的属性(data-id)

<div id="response1">
  <div data-id="2">
    <span>XYZ</span></div>
  <div data-id="3">
    <span>XYZ</span></div>
  <div data-id="4">
    <span>XYZ</span>
    <div></div>
    </div>
  <div data-id="5">
    <span>XYZ</span></div>
  <div data-id="6">
    <span>XYZ</span></div>
  <div data-id="7">
    <span>XYZ</span>
    <div></div></div>
</div>

但是当我使用

@browser.div(id: "response1").divs  

我得到8个div元素,我期待只有6个子div元素具有属性'data-id',但似乎.divs捕获了html中的所有div元素。

有没有办法只捕获那6个div元素。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Watir v6.2或更高版本,则会有一个新的#children方法可以找到直接的孩子:

browser.div(id: "response1").children

它接受标准定位器。例如:

# is a div tag
browser.div(id: "response1").children(tag_name: 'div')

# has a data-id containing 5
browser.div(id: "response1").children(data_id: /5/)

如果您使用的是旧版本,则必须编写XPath:

browser.div(id: "response1").divs(xpath: './div')