在geb模块中查找直接子项

时间:2015-07-09 07:41:20

标签: groovy selenium-webdriver css-selectors geb

我试图编写geb个模块来处理div标签的行和列,如下所示:

 <div class="container">
   <div class="row">
     <div class="col-xs-12">...</div>
     <div class="col-xs-12">...</div>
   </div>
   <div class="row">
     ...
       <div class="row">...</div>
     ...
   </div>
</div>

拥有geb个模块:

class GridRowModule extends Module {
    static content = {
        columns { $("div", 'class': startsWith('col-')) }
    }
}

class GridLayoutModule extends Module {
    static content = {
        rows { index -> moduleList GridRowModule, $(".row"), index }
    }
}

class ContainerModule extends Module {
    static content = {
        container { module GridLayoutModule, $(".container") }
    }

}

但行$(".row")的nagivator以递归方式查找所有行。如何才能将搜索限制在一个级别?

使用css选择器,我想写$(".container > .row"),但后来我打破了通用模块方法。我能以某种方式从模块中做到这一点吗?一种访问父css选择器的方法吗?

geb还有其他办法可以轻松完成吗?

1 个答案:

答案 0 :(得分:2)

children(".row")代替$(".row")解决了我的问题!所以解决方案是:

class GridRowModule extends Module {
    static content = {
        columns { children("div", 'class': startsWith('col-')) }
    }
}

class GridLayoutModule extends Module {
    static content = {
        rows { index -> moduleList GridRowModule, children(".row"), index }
    }
}

class ContainerModule extends Module {
    static content = {
        container { module GridLayoutModule, $(".container") }
    }

}