我试图使用Spock(Grails应用程序)自动执行某些功能测试,但我无法弄清楚如何自动执行以下操作: 我需要能够登录到一个Web应用程序并单击链接(从Web应用程序)并打开一个新的浏览器窗口并登录到第二个应用程序(因为他们共享用户凭据 - 他们使用SSO)。我需要测试的所有功能都在第二个Web应用程序上,并且没有直接登录该应用程序。
我想知道是否有办法在网络应用之间使用当前的浏览器会话(并共享cookie)。
我很感激任何想法。
找到答案
我设法找到了查询的答案。正如我在下面的评论中所提到的,我使用了NewWindow()方法,如下所示:
withNewWindow({AnchorForNewPage.click()}){ 断言(NewPage) 做一点事 还有别的 } 确保您在第二页上执行的操作都在此闭包内,否则测试将失败。
答案 0 :(得分:3)
让我引用 Book of Geb :
geb.spock.GebSpec类将清除cleanup中的cookie() 方法除非规范是@Stepwise,在这种情况下它们被清除 cleanupSpec()(意思是逐步规范中的所有特征方法 共享相同的浏览器状态。)
不确定它是否适用于两个网络应用之间的SSO和会话共享,但您可以尝试一下。只需将测试步骤作为 fixture 类中的 fixture 方法进行共享会话。