当前位置: 首页 > 知识库问答 >
问题:

在Geb和Spock测试中无法删除cookie

陆晓博
2023-03-14

我正在用Geb(0.12.2)和Spock定义一些规范来测试我的前端。我的应用程序的登录系统依赖于我们内部IDP的SSO。一旦我进入我的应用程序的私人部分,如果以前没有在我们的IDP中登录,它将重定向到IDP主页,然后登录并重定向到您最初询问的私人URL。

  • 注销。
  • 删除IDP设置的cookie。

我希望初始化每一个GebSpec类,而不需要任何以前的cookie或以前GebSpec执行中的状态,并且不想依赖于注销系统。为了做到这一点,我可以:

  1. 删除所有cookie。
  2. 关闭浏览器(不想这样做)。

此外,正如http://www.gebish.org/manual/current/#cookie-management-in-tests中所说:

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

这在我的GebSpec类中没有发生,也不是默认的,也不是强制的。

共有1个答案

夹谷俊远
2023-03-14

browser.clearcookies()只清除当前域的cookies,这限制了浏览器的工作方式(您也只能在javascript中控制当前域的cookies),也限制了WebDriver在调用deleteAllcookies()时的操作。公平地说,有一张票可以让文档更清楚地了解browser.clearcookies()的实际功能。

要清除IDP域的cookie,首先需要转到该域的任何url,然后调用clearcookies()

 类似资料:
  • 我配置了一些测试,根据web应用程序中的登录尝试检查不同的消息。因为消息和输入字段将在第三次登录尝试时更改。 登录是基于向特定电话号码发送密码的两步登录,因此在第一页LoginPage中,用户介绍他们的Id和电话号码,然后将其重定向到第二页ValidationLoginPage,用户在其中介绍接收到的密码。 我想检查一下,在第二个页面中,用户只能引入三个错误的密码,在第四次尝试时,引入密码的输入将

  • 我在理解GEB/Spock测试中的一个问题时遇到了一些困难。我们正在使用gradle,并试图并行运行我们的测试。据我所知,gradle中的maxParallelForks属性将在单独的JVM中运行测试类。 我遇到的问题是,当我有6个测试类并将maxParallelForks设置为4个时,当测试开始时,我将得到4个测试类并行运行。太棒了!但最后两个班才是问题所在。假设在前4节课中,2节课在1分钟内完

  • 因此,目前我的每个测试规范类看起来类似于: 现在,我的问题是我似乎不能创建一个新的测试(在第一个测试之上)可以创建测试数据。如果没有有效的givit/when/then语句,测试似乎不会执行,从现有测试中调用方法也不会工作。我已经研究了grails-remote-control插件来帮助我,我相信这将使我能够成功地使闭包设置数据,但我不确定从GebReportSpecs(或某个抽象父级)中调用该插

  • 我受到了某种测试污染。当我单独运行失败测试时,它们会通过。当我把它们一起运行时,我会得到错误。这些错误与数据库无关。我不能理解错误。例如:页面: 我不明白,因为模块的内容不是必需的。另外,另一个测试的污染会导致这种情况吗?我的测试太多了,无法列出。 我唯一的想法是cookie被设置而不是由我的程序。有一堆cookie,它们具有奇怪的名称,如“ba743b”、“kvcd”、“kn_ai”等,并具有神

  • 免责声明:在我来这里问这个问题之前,我已经通过了这么多不同的来源。我用maven引用了geb的GitHub项目、geb的book和许多YouTube教程,等等。 我只是试图让一个项目启动和运行,做一个非常简单的自动化搜索引擎测试,只是为了让我可以玩工具。 这是我在测试中得到的例外。我运行了一个非常简单的assert Hello World测试,该测试已经通过,为了清晰起见,我删除了该测试: gro