Groovy 如何用geb保持干燥?

Groovy 如何用geb保持干燥?,groovy,geb,Groovy,Geb,我发现我不得不重复GEB的断言 例如,在我的许多主张之前需要这样做: browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript') 保存可重复使用的查找规范的模式是什么 请记住,查找将与“断言”一起执行,因此必须在浏览器处于特定状态时执行(即,我不能执行一次查找并保存结果) 下面是一个完整的示例: Given(~'I should see the

我发现我不得不重复GEB的断言

例如,在我的许多主张之前需要这样做:

browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript')
保存可重复使用的查找规范的模式是什么

请记住,查找将与“断言”一起执行,因此必须在浏览器处于特定状态时执行(即,我不能执行一次查找并保存结果)

下面是一个完整的示例:

Given(~'I should see the example error response on the page') { ->
     assert browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript').text() =~ /\}/
     assert browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript').text() =~ /\{/
}

为了保持干燥,我现在要做的是:

class   ExampleErrorResponse {
   static Object get(browser) {
        return browser.$("h3", text: "Example Error Response").siblings("div").find("pre", 'data-language':'javascript');
    }
}
我可以这样使用:

Given(~'I should see the example error response on the page') { ->
  assert ExampleErrorResponse.get(browser).text() =~ /\}/
  assert ExampleErrorResponse.get(browser).text() =~ /\{/
}

如果您发现此方法有任何问题/缺陷,请发表意见。

感觉您应该使用Geb来满足您的要求。

您是否使用页面?我猜这是黄瓜?你有没有看过我对groovy和这个完整的堆栈还不熟悉,并且刚刚交给我一个现有的项目来处理。我不相信它在使用页面。是黄瓜。然而,我已经找到了一个解决方案,我将把它作为一个答案发布。感谢您提供GEB示例的链接(但它使用页面,不管是什么!?!)。只是看了一下页面,这似乎是一个很好的方法。我将把它放在未来重构的待办事项列表上。