1

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

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

我会很感激任何想法。

找到答案

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

withNewWindow({ AnchorForNewPage.click()}){ assert at(NewPage) do something and something else } 确保您在第二页上执行的所有操作都在此闭包内,否则测试将失败。

4

1 回答 1

3

让我引用《盖布之书》

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

不确定它是否适用于两个 Web 应用程序之间的 SSO 和会话共享,但您可以尝试一下。只需将需要共享会话的测试步骤作为固定方法保留在单个规范类中。

于 2013-10-28T23:26:44.683 回答