2017-08-04 56 views
0

我在模拟复选框的页面中有span元素。这个“复选框”是否被选中是通过赋予某个类的元素来设置的。用接口包装返回的Geb导航器

在我的网页,我已经得到了返回使用$()选择这个元素(IE导航仪实例)的方法:

class MyPage extends page { 

    def getCheckbox(String searchStr) { 
     $("div.parent").find(".class-a", text: searchStr) 
    } 
    def myFunc() { 
     def cb = getCheckbox("foo") 
     if (cb.has(".class-B") { 
      // checkbox is ticked. do something... 
     } 
    } 
} 

我正在寻找一种方式来装饰返回的对象从getCheckbox(),让客户希望选中该复选框的状态可以做cb.isChecked(),而不是更晦涩has(".class-B")(IE以获得类似的接口,以内建checkbox形式控制模块)

有什么建议? 谢谢!

+0

你总是可以创建一个名为'isChecked(Navigator cb)'的方法来包装'.has(“。class-B”)并调用它,还有一种方法可以覆盖Navigator接口,在这种情况下你可以创建你自己的Navigator方法。这对于这样一个简单的事情来说似乎是一个复杂的解决方案,但是如果这是您回答问题后显示如何覆盖Navigator界面的问题。这是我认识你的唯一方法,就像cb.isChecked()假设cb是导航器一样。 – switch201

回答

0

这个怎么样:

class CheckBoxNavigator extends NonEmptyNavigator { 
    def isChecked(){ 
     return this.has(".class-B") 
    } 
} 

然后你只需要定义复选框元素作为“CheckBoxNavigator”,然后就可以使用isChecked()

1

你的复选框模拟span元素是总理候选人成为一个Geb module - 简单地定义一个模块类,使用你想在你的包装器上存在的方法,然后将它传递给代表你的span元素的导航器的Navigator的方法module()