【发布时间】:2014-08-25 21:26:57
【问题描述】:
我想在一个 groovy 类中定义一个方法,我可以动态地将 xpath 传递给它(以便根据应用程序重复使用相同的方法)。下面的代码 sn-p 只是一个概念证明,但是我最终想构建一个可重用的命令/组件库,这就是为什么我想学习如何动态定义页面内容的原因。
如果我试试这个:
import geb.Page;
class oneStepDefMethodClass extends Page {
static url = 'http://www.google.com'
static content = {
queryInput { $("input", id: "gbqfq") }
queryButton { $("button",name: "btnG") }
//songLink { $("span._BZ")}
}
....
void assertSongInResults2(String xpathOfSongLink){
println "Waiting on video link "+ xpathOfSongLink
songLink { $(xpathOfSongLink)}
waitFor {
songLink.displayed
}
}
}
我收到此错误:groovy.lang.MissingMethodException:没有方法签名:geb.navigator.NonEmptyNavigator.songLink() 适用于参数类型:(oneStepDefMethodClass$_assertSongInResults2_closure3) 值:[oneStepDefMethodClass$_assertSongInResults2_closure3@7c455e96]
如果我扔了一个
content={songLink {$(xpathOfSongLink)}
}
块在 assertSongInResults2 方法中,我得到这个错误: geb.error.UnresolvablePropertyException:无法将 songLink 解析为 oneStepDefMethodClass 的内容,或其导航器上下文的属性。 songLink 是您忘记导入的类吗?
那么,有没有办法像这样动态定义页面内容?如果我将其与其余内容一起静态定义在顶部,则程序可以正常执行,但这不是重点,我想创建可重用的资源,而不是每次我想使用 geb 时都重新定义轮子。
【问题讨论】: