Testing 如何将参数传递给Geb中的内容定义?

Testing 如何将参数传递给Geb中的内容定义?,testing,groovy,geb,Testing,Groovy,Geb,我有一个页面(StartPage),上面有几本书的链接,我想创建一个通用的方法或内容定义,单击带有特定标题的链接并导航到该页面。所有书籍页面都定义了一个定义书籍标题的静态字符串标题。我想做的事情如下(开始页): 它只需调用openMyBook即可工作,但正如您看到的书页(MyBookPage)和text是硬编码的 因此,我的问题基本上是,我是否可以将参数传递给内容定义(openMyBook)或修改openBook方法,以便在不丢失会话的情况下导航到图书页面。您需要在此处使用browser.pag

我有一个页面(StartPage),上面有几本书的链接,我想创建一个通用的方法或内容定义,单击带有特定标题的链接并导航到该页面。所有书籍页面都定义了一个定义书籍标题的
静态字符串标题。我想做的事情如下(开始页):

它只需调用
openMyBook
即可工作,但正如您看到的书页(
MyBookPage
)和
text
是硬编码的


因此,我的问题基本上是,我是否可以将参数传递给内容定义(
openMyBook
)或修改
openBook
方法,以便在不丢失会话的情况下导航到图书页面。

您需要在此处使用
browser.page(pageType)
而不是
to()
,因为
to()
将浏览器驱动到传入的页面类型的url。您可能没有为这些页面指定
static url='…'
字段,默认值是基本url的根,这就是您看到浏览器最终出现在登录页面的原因

如果您在此处使用
browser.at(pageType)
会更好,因为这样会验证书籍页面的at检查器,并且
at()
在成功验证后还会在浏览器上设置页面

def <T extends Page> T openBook(Class<T> pageType) {
    $(".product h3", text: pageType.TITLE).parents("a").click()
    browser.to(pageType)
    browser.page as T
}
static content = {
    openMyBook(to: MyBookPage) { $(".product h3", text: "My Book Title").parents("a")}
}