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