我正在为Grails应用程序完成Geb测试的一部分,并且无法在文档中找到它(尽管我可能会忽略某些内容)。如何选择并单击控制器操作的链接?这里的表单元素有一个控制器动作链接(我不得不重命名一些东西......)
是elementId的问题还是我需要寻找其他地方?通常情况下我可以用#选择器击中Ids就好了。很难在文档中找到一个例子。非常感谢任何帮助或指导。
(使用Grails 2.4.3,Geb 9.3和Firefox 37.0.2)
表格项目:
<li id="formItemID">
<g:link elementId="linkId" controller="controller" action="linkAction">Link Text HERE</g:link>
</li>
Geb测试:
def "test controller action link"(){
when:
go linkURL here
$('#linkId').click() // this won't hit
then:
$('.some kind of panel-heading').value('something value...')
}
答案 0 :(得分:1)
查看firebug中呈现的HTML(或chrome dev控制台,或其他)。
什么呈现?
<li id="formItemID">
<a id="linkId" href="http://localhost:8080/controller/linkAction">Link Text HERE</g:link>
</li>
如果看起来像这样,那么您应该可以使用您提供的代码段点击链接。
$('#linkId').click()
或者,您可以尝试其中一些:
$("a", id: "linkId").click()
$("li", id: "formItemID").find("a")[0].click()
通常,我会创建这样的链接:
<a id="myId" href="${createLink(controller: 'myController', action: 'myAction')}">link text</a>
所以我更确定渲染的HTML输出是什么。
修改强>
创建geb测试的一些提示
Thread.sleep()
,这是进入片状测试世界的单程票。如果您需要等待某个ajax完成,请创建一个等待加载微调器消失的实用程序方法,并从测试中调用它。