无法删除 Geb 和 Spock 测试中的 cookie
Impossible to delete cookies on Geb & Spock test
我正在使用 Geb (0.12.2) 和 Spock 定义一些规范来测试我的前端。
我的应用程序的登录系统依赖于我们内部 IDP 的 SSO。一旦我进入我的应用程序的私人部分,如果之前没有登录我们的 IDP,它将重定向到 IDP 主页,然后登录并再次将您重定向到最初询问的私人 url.
我需要随时注销。为此,我可以:
- 注销。
- 删除 idp 设置的 cookie。
我希望初始化每个 GebSpec class,而无需任何先前的 cookie 或先前 GebSpec 执行的状态,并且不想依赖注销系统。
为此,我可以:
- 删除所有 cookie。
- 关闭浏览器(不想那样做)。
但是我遇到了两个问题。
1) 删除 cookie
如 http://www.gebish.org/manual/current/#implicit-driver-management 中所述,我尝试在 setup()
、setupSpec()
、cleanup()
和 cleanupSpec()
方法中调用 clearCookies()
方法,但对 cookie 没有影响(调用这些方法后,在浏览器中调试和检查 cookie 不会删除任何内容)。
我正在从 IntelliJ 和命令行调用 gradlew 启动测试。
此外,如 http://www.gebish.org/manual/current/#cookie-management-in-tests 中所述:
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).
我的 GebSpec classes 中没有发生这种情况,既没有默认也没有强制发生。
我是否正在做任何事情来干扰这个假设的默认行为(不使用@Stepwise)或者我遗漏了什么?有人有同样的效果吗?
PS:我正在使用 BaseGepSpec 为我所有的 GebSpec
classes 定义通用的 setup() 方法,并试图不以相同的结果进行扩展.我也在使用 GebReportingSpec
并尝试没有同样的效果......)
谢谢!
Browser.clearCookies()
只清除当前域的 cookie,这是浏览器工作方式的限制(您也只能在 javascript 中控制当前域的 cookie)以及 WebDriver does when you call deleteAllCookies()
. To be fair, there is a ticket for making the docs clearer about what Browser.clearCookies()
actually does.
要清除您的 IDP 域的 cookie,您需要先访问该域的任何 url,然后再调用 clearCookies()
。
我正在使用 Geb (0.12.2) 和 Spock 定义一些规范来测试我的前端。 我的应用程序的登录系统依赖于我们内部 IDP 的 SSO。一旦我进入我的应用程序的私人部分,如果之前没有登录我们的 IDP,它将重定向到 IDP 主页,然后登录并再次将您重定向到最初询问的私人 url.
我需要随时注销。为此,我可以:
- 注销。
- 删除 idp 设置的 cookie。
我希望初始化每个 GebSpec class,而无需任何先前的 cookie 或先前 GebSpec 执行的状态,并且不想依赖注销系统。 为此,我可以:
- 删除所有 cookie。
- 关闭浏览器(不想那样做)。
但是我遇到了两个问题。
1) 删除 cookie
如 http://www.gebish.org/manual/current/#implicit-driver-management 中所述,我尝试在 setup()
、setupSpec()
、cleanup()
和 cleanupSpec()
方法中调用 clearCookies()
方法,但对 cookie 没有影响(调用这些方法后,在浏览器中调试和检查 cookie 不会删除任何内容)。
我正在从 IntelliJ 和命令行调用 gradlew 启动测试。
此外,如 http://www.gebish.org/manual/current/#cookie-management-in-tests 中所述:
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).
我的 GebSpec classes 中没有发生这种情况,既没有默认也没有强制发生。
我是否正在做任何事情来干扰这个假设的默认行为(不使用@Stepwise)或者我遗漏了什么?有人有同样的效果吗?
PS:我正在使用 BaseGepSpec 为我所有的 GebSpec
classes 定义通用的 setup() 方法,并试图不以相同的结果进行扩展.我也在使用 GebReportingSpec
并尝试没有同样的效果......)
谢谢!
Browser.clearCookies()
只清除当前域的 cookie,这是浏览器工作方式的限制(您也只能在 javascript 中控制当前域的 cookie)以及 WebDriver does when you call deleteAllCookies()
. To be fair, there is a ticket for making the docs clearer about what Browser.clearCookies()
actually does.
要清除您的 IDP 域的 cookie,您需要先访问该域的任何 url,然后再调用 clearCookies()
。