2017-10-19 73 views
1

使用的Watir-webdriver的使用Ruby 2.3.3捕获直接子在HTML

我需要从以下HTML

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

找到所有div的有属性(数据-ID),但是当我使用

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

我得到8个div元素,我期待只有6个具有属性'data-id'的子div元素,但看起来像.divs捕获该html内的所有div元素。

有没有什么办法来捕捉这6个div元素。

回答

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') 
+0

我在旧的Watir和你使用XPath了一些解决方案为我工作。 –