如何避免代码库中的 geb waitFor{} 或最小化 waitFor{}?

How to avoid geb waitFor{} or minimize the waitFor{} in the codebase?

我们使用 Backbone.js 作为我们的 UI 框架,为了自动化,我们使用 geb 和 gradle。然而,当我们尝试自动化任何事情时,大多数情况下没有编写 waitFor{} 语句,测试失败。令人沮丧的是,您需要在测试中使用这么多 waitFor{}。我相信应该有一些更好的方法来做到这一点。任何 help/suggestion 都将对摆脱这件事非常有益!

使用 Backbone.js 或 Angular 等框架构建单页应用程序会导致非常异步的 Web 应用程序。通过 AJAX 请求以异步方式检索数据,然后使用它来更改页面的某些部分与同步(重新)加载页面不同,并且不会被 WebDriver 检测到。

因为在此类应用程序中一切基本上都是异步的,所以您将不得不在 Geb 测试中处理许多 waitFor {},我不知道有什么办法可以绕过它。您还必须记住您的应用程序中哪些部分和操作是异步的,如果您不这样做并且忘记在必要的地方放置 waitFor {} ,您最终将进行古怪的测试。这里没有灵丹妙药。

您可以做的一件事是 "hide" 页面和模块中的异步性。不要直接与异步元素交互,而是将此类交互包装在页面和模块方法中。这样您的测试将更易于阅读,并且您不必在所有地方复制所有这些 waitFor {} 块,这也应该使您更难忘记将一个块放在需要的地方。