2013-02-21 99 views
1

我得到某种测试污染。当我单独运行失败的测试时,它们会通过。当我一起运行它们时,我会遇到错误。这些错误与数据库无关。我无法理解错误。例如: 页:Spock/Geb测试污染

errorModule (wait: true) { module ErrorModule } 

errorModule: 静态内容= { 错误(必需:false){$( “h3.error”)}}

规格:

assert page.errorModule 

例外: org.openqa.selenium.NoSuchElementException:无法找到元素:{“method”:“tag name”,“selector”:“html”}

我不明白,因为模块的内容不是必需的。另外,另一个测试会造成什么污染?我的测试数量太多,无法列出。

我唯一的想法是不是由我的程序设置的cookie。有一些奇怪名称的cookie,例如“ba743b”,“kvcd”,“kn_ai”等,具有诸如“1361461306476”和“1.1361461306.1.1.utmcsr =(direct)| utmccn =(直接) utmcmd =(无)”。有没有人知道这些cookies可能来自哪里以及如何在测试结束时清除它们?这甚至很重要吗?他们不是会话cookie,他们有到期日期。我不知道如何删除这些我认为我的代码没有创建的cookies。但它可能与此无关。

+0

您的'page.errorModule'是必需的,您已经将'errorModule.error'设置为不需要。如果你有一个名字工程师,OTOH会很好。 – 2013-02-21 16:04:55

+0

但是内容不是必需的,我认为这可能没有关系。让我困惑的是,这只发生在蓝色月亮中,而不是所有的页面调用。 errorModule的内容几乎从不存在。谢谢你的评论。我会尝试errorModule(wait:true,required:false)并断言page.errorModule?.etc – 2013-02-21 16:07:19

回答

0

你用Firefox来执行你的测试吗?切换页面后错误是否发生?

如果是这样,那么当它仍然(重新)加载页面时,它将控件返回到测试代码时,您可能会碰到Firefox驱动程序中的错误。当标题为空字符串时,错误有时也会在at()中显示。我倾向于在引发异常的行之前添加一个电话到at()/verifyAt()。这是一种肮脏的黑客攻击,但我无法想象任何更好的东西,而且它似乎总能奏效。