如何编写共享浏览器会话的Spock测试

时间:2013-10-25 09:34:04

标签: grails spock geb

我试图使用Spock(Grails应用程序)自动执行某些功能测试,但我无法弄清楚如何自动执行以下操作: 我需要能够登录到一个Web应用程序并单击链接(从Web应用程序)并打开一个新的浏览器窗口并登录到第二个应用程序(因为他们共享用户凭据 - 他们使用SSO)。我需要测试的所有功能都在第二个Web应用程序上,并且没有直接登录该应用程序。

我想知道是否有办法在网络应用之间使用当前的浏览器会话(并共享cookie)。

我很感激任何想法。

找到答案

我设法找到了查询的答案。正如我在下面的评论中所提到的,我使用了NewWindow()方法,如下所示:

withNewWindow({AnchorForNewPage.click()}){                 断言(NewPage)                 做一点事                 还有别的               } 确保您在第二页上执行的操作都在此闭包内,否则测试将失败。

1 个答案:

答案 0 :(得分:3)

让我引用 Book of Geb

  

geb.spock.GebSpec类将清除cleanup中的cookie()   方法除非规范是@Stepwise,在这种情况下它们被清除   cleanupSpec()(意思是逐步规范中的所有特征方法   共享相同的浏览器状态。)

不确定它是否适用于两个网络应用之间的SSO和会话共享,但您可以尝试一下。只需将测试步骤作为 fixture 类中的 fixture 方法进行共享会话。