grails - 如何编写共享浏览器 session 的Spock测试

标签 grails spock geb

我试图使用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/

相关文章:

grails - 如何在 Grails 中检索上次保存的域类

grails - Grails-如何获得一条错误消息

list - 从gsp向 Controller 传递多个值以保存很多到很多

grails - 在Spock Framework中继承。我想在多个规范中重用测试用例

unit-testing - 如何使用Spock在Grails中模拟同一个类的多个方法?

java - 共享Spock模拟验证

grails - 如何让 Spock 重试失败的 Geb 测试?

java - 以编程方式更改 ServletRequest 服务器名称

testing - 根据环境执行特定的 Geb 测试

grails - headless 运行 Geb + spock 测试