我们将 Selenium 与 Java API 和一些 Javascript 用户扩展一起使用。我们在我们的应用程序中使用了很多 AJAX 调用。我们的许多测试随机失败,因为有时 AJAX 调用完成速度比其他时间慢,因此页面未完全加载。我们通过等待特定元素或 Thread.sleep 来解决这个问题。我试图找到一种方法来代替等待网络流量完成。这样我们就可以这样做:
selenium.click("some JS button");
selenium.waitForNetwork();
assertTrue(something);
这样我们就可以摆脱线程 hibernate ,并在服务器响应更快时让测试通过得更快,并且不会有那么多测试由于计时问题而失败。
我一直无法找到一种方法来执行此搜索 Google。有谁知道我们如何做到这一点? (最好通过 Javascript 或 Java API,但欢迎所有建议)。
注意:“waitFor”的其他变体不是我要找的。我们已经在点击和其他方面使用了这些。我正在寻找等待网络流量的东西。感谢所有反馈,我会尝试一些建议,但我仍然愿意接受其他想法。
谢谢。
最佳答案
Selenium 中可用的 waitFor 类型很少。在您的测试用例中,如果您知道特定文本会出现在页面加载时,您可以使用 waitForText。如果有不同的 DOM 元素被填充(通过 Ajax/pageload),您可以依次添加 waitForText。
关于java - Selenium - 等待网络流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110588/