用接口包装返回的Geb Navigator

时间:2017-08-04 03:03:43

标签: functional-testing geb

我在页面中有一个模拟复选框的span元素。是否“复选”这个“复选框”是通过给元素提供一些类来设置的。

在我的页面中,我有一个使用$()选择器返回此元素的方法(I.E. a Navigator实例):

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表单控件模块类似的接口)

有什么建议吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

模拟span元素的复选框是成为Geb module的主要候选者 - 只需使用您希望在包装器上存在的方法定义模块类,然后将其传递给Navigator' s {用于表示span元素的导航器的{1}}方法。

答案 1 :(得分:0)

怎么样:

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

然后你只需要将checkBox元素定义为“CheckBoxNavigator”然后你可以使用isChecked()