我试图使用Spock(Grails应用程序)使一些功能测试自动化,但无法弄清楚如何使以下操作自动化:
我需要能够登录到一个Web应用程序,然后单击一个链接(来自Web应用程序),然后打开一个新的浏览器窗口并登录到第二个应用程序(因为它们共享用户凭据-他们使用SSO)。我需要测试的所有功能都在第二个Web应用程序上,并且没有直接登录该应用程序。
我想知道是否存在一种在Web应用程序之间使用当前浏览器 session (并共享Cookie)的方法。
我将不胜感激。
找到答案
我设法找到了查询的答案。如下面的评论中所述,我按如下方式使用了withNewWindow()方法:
withNewWindow({AnchorForNewPage.click()}){
在(NewPage)断言
做一点事
还有其他
}
确保您在第二页上执行的所有操作都在此关闭之内,否则测试将失败。
最佳答案
让我引用Book of Geb:
The geb.spock.GebSpec class will clear the cookies in the cleanup() method unless the spec is @Stepwise, in which case they are cleared in cleanupSpec() (meaning that all feature methods in a stepwise spec share the same browser state).
不确定它将对两个Web应用程序之间的SSO和 session 共享起作用,但是您可以尝试一下。只需将需要共享 session 的测试步骤作为夹具方法保留在单个Specification类中。
关于grails - 如何编写共享浏览器 session 的Spock测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19586166/