在 HTML 中捕获直接子项

Capture immediate child in HTML

将 watir-webdriver 与 Ruby 2.3.3

一起使用

我需要从 HTML

下面找到所有具有属性(data-id)的 Div
<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 个具有属性 'data-id' 的子 div 元素,但似乎 .divs 捕获了所有 [=27] =] 里面的元素 html。

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

如果您使用的是 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')