Geb如何从另一个模块引用模块?

时间:2017-05-18 21:07:53

标签: selenium groovy geb

我试图从另一个模块中引用一个模块,但它没有按预期工作。我不知道我哪里出错了所以我会让我的代码示例/堆栈跟踪进行说话。

主要测试规范:

class TestSpec extends GebReportingSpec {
//bunch of code yada yada
    def "someFeatureMethod"(){
        at Page1
        module1.doThing()
    }
}

这是Page1的样子:

class Page1 extends Page {
    static content = {
        module1 { module(new Module1())}
    }
}

这是Module1的样子:

class Module1 extends Module{
    static content = {
        module2 {module(new Module2())} //not going to type it out but assume module2 has a method named someFunction2()
    }

    def doThing(){
        //This is where I am unsure the most. I have tried a few different things in this section
        browser.at Page1
        module1.module2.someFunction2()
    }
}

我的堆栈跟踪是这样的:

groovy.lang.MissingPropertyException: Unable to resolve module1 as content for Page1 -> module1: Module1, or as a property on its Navigator context. Is module1 a class you forgot to import?

我确实导入了所有可能的东西。

如果可能的话,我想要的是能够在模块内部有一个模块,请解释它是如何实现的。谢谢。

1 个答案:

答案 0 :(得分:0)

doThing()方法中的正确语法如下:

{{1}}

当我早些尝试这个时,我实际上有一个类型 - 这就是为什么我很困惑。修复我测试的类型后,这个设置有效。