无法单击 Geb/Groovy 中的 Button 元素

not able to click Button element in Geb/Groovy

非常类似于

按钮在网页中定义为:

<button class="gigantic-long-string-gwtui-etc" 
type="button" style="width: 60px" tabIndex="200">OK</button>

我正在使用 Geb。我定义按钮如下:

systemUseNotification (wait:true) { $("button", text:"OK") }

并尝试点击按钮:

waitFor(60) {systemUseNotification.click()}

代码能够找到按钮,但 click() 从未起作用。我不得不使用一种奇怪的解决方法将 ENTER 键发送到按钮

systemUseNotification << Keys.chord(Keys.ENTER))

代码能找到但不能点击的其他控件由

定义
templateTab(wait:true) { $("td" , text:"Templates")}

这是一个 table 单元格,单击它会更改视图。 同样,在此 templateTab 上调用 click() 没有做任何事情。这甚至用 waitFor 环绕它,并验证代码找到了控件。

HTML中的实际定义是<td class="main-menu-item-text">Templates<td>

做了什么工作是$(class:'main-menu-item-text', text:"Templates").click()

但我真的不喜欢必须指定 class 名称,因为它违背了具有抗更改测试代码的目的。

同样的问题,我试图点击定义为

的 div 控制按钮

我想调用 use 类似的东西: $("div", title:"Switch Dashboards").click() 但这也不管用。
请告诉我我做错了什么。

我发现以下技术有效:

waitFor {$("td", class:contains("text"), text:"Templates").click()}

尽管如此,我仍然希望避免了解有关 class 的任何信息,但这至少减少了我必须匹配的字符串的大小。

我尝试过,例如 class:contains(~/.*/)class:~/.*/,这样我就可以成为 "class-agnostic",但这些总是导致陈旧。