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

时间:2015-02-19 22:32:47

标签: groovy geb

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

1 个答案:

答案 0 :(得分:3)

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

因为在这些应用程序中所有内容基本上都是异步的,所以你必须在Geb测试中处理很多waitFor {},我无法知道它。您还必须记住哪些部分和操作在您的应用中是异步的,如果您不想忘记将waitFor {}放在必要的地方,您最终会进行严格的测试。这里没有银弹。

你可以做的一件事就是"隐藏"您的页面和模块中的异步性。不要直接与异步元素交互,而是在页面和模块方法中包含这些交互。通过这种方式,您的测试将更容易阅读,您不必在所有地方复制所有这些waitFor {}块,这也会让您更难忘记将其放置在需要的位置。