傳參數

額外傳參數給modules

Module

在Module內,要先宣告要接受傳入的參數名稱,例如「buttonName」。

Geb Sample Code

class ExampleModule extends Module {
    def buttonName
    static content = {
        button { $("input", type: "submit", name: buttonName) }
    }
}

Page

theModule元素定義可接受一個傳入參數name,並會將此參數設定給ExampleModule的buttonName值。

Geb Sample Code

class ExamplePage extends Page {
    static content = {
        theModule { name -> module ExampleModule, buttonName: name }
    }
}

Test script

如同ExamplePage所宣告的,此時theModule就可以接受一個傳入參數。

Geb Sample Code

Browser.drive {
    to ExamplePage
    theModule("something").button.click()
}

轉換成Java style

有好多參數傳來傳去頭都昏了,如果你跟我一樣,之前是Java背景的工程師,不仿可以先想像成下面這個例子,再去理解groovy code style。

虛擬碼

class ExampleModule extends Module{
    private String buttonName;

    ExampleModule(String name){
       buttonName = name;
    }

    Object button(){
        return $("input", type: "submit", name: buttonName)
    }
}

class ExamplePage extends Page {
    ExampleModule theModule(String name){
        return new ExampleModule(name);
    }
}

class Test{
    public void main(String arg[]){
        ExamplePage examplePage = new ExamplePage();
        examplePage.theModule("something").button.click();
    }
}

results matching ""

    No results matching ""