- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的应用程序有一些不稳定的测试,有时会成功通过,有时会在页面加载期间因 WaitTimeoutException
失败。我发现我们正在使用 waitFor(time)
和 sleep(time)
等方法。它们之间有什么区别,哪一个更好用?或者有一些更好的解决方案来解决这个问题?
最佳答案
很多场景都需要在geb中等待。等待页面加载最好在使用页面模式时完成,您可以在页面中定义 at 检查器,例如:
static at = { waitFor { $('form').@id == "loginForm"} }
当使用此功能时,geb 将等待,直到 at 检查器可以验证页面已加载。等待直到geb配置中设置的超时。这突出了它的工作原理。在任何脚本上,您可以在任何条件下使用自己的 waitFor 调用。我提供的链接将向您展示这是如何工作的。在 geb 的更高版本中,您可以将每个 at 调用设置为显式包装在 waitFor 中。
static at = { $('form').@id == "loginForm" }
另外回答您的问题: sleep 只能作为最后的手段,因为整个线程都处于 sleep 状态,并且可能会破坏您的等待设置。当您这样做时,您会失去对加载和等待脚本的控制感。如果您无法使用带有等待条件的 waitFor 闭包将测试配置为工作,那么也许您应该考虑使页面更快。我们使用60秒只是因为环境问题。
在我看来,WaitFor(time) 有点多余,除非您实际上正在测试时间本身。
在geb中,最好针对页面内容进行操作,而不是使用可能超出您控制范围的条件。
Geb 配置:
waiting {
timeout = 30
retryInterval = 1.0
}
Ajax:WAITING ajax 调用完成。它会首先休眠,因为大多数调用都在此时完成,然后它将检查事件的 ajax 调用,并在完成后休眠更多,以便为页面提供渲染时间。某些动态页面更改需要比其他页面更长的时间,因此可以修改 sleep 后的内容以适合您的网站或完全删除。
/**
* Wait for all AJAX requests to finish.
*/
void waitForAjax(time=350) {
sleep(time)
if (!js.exec("return $.active > 0;")) {
sleep(time) // You may require more wait time here depending on action
return
}
waitForAjax(time)
}
关于user-interface - Geb 测试经常失败并出现 WaitTimeoutException : condition did not pass in 99. 0 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25135533/
当运行 scala.util.Random().nextInt(3) 81 次时,我看到如下结果(Java 开发人员,请参阅 edit 了解这之间的关系): 200010202002112102222
在使用 native 应用程序在混合模式 C++/CLI 中调试时,我遇到了进程挂起问题。这是无法忍受的,我的调试几乎 70% 都会发生这种情况,我需要一次又一次地重新启动该过程。 是否有任何修补程序
我不知道这是一个错误还是某种误用/错误配置。希望有人能帮忙。谢谢! 如果我更改模块或 list 目录中的文件,通常会导致错误,大部分是以下类型 无法找到节点上的类 在节点上找不到定义类 当 Puppe
我是一名优秀的程序员,十分优秀!