ajax - 您如何使用 Selenium 测试 Ajax 应用程序并使其保持稳定?

标签 ajax testing selenium

我们的团队一直在使用 Selenium 测试我们的应用程序,因为它主要由 JavaScript 驱动,我们总是遇到测试偶尔失败的问题。随着测试数量的增加,在一次完整运行中至少有两个测试失败的可能性已成为确定性。

我们最近发现,我们可能有一个竞争条件,即 selenium 会在初始化 JavaScript 有机会将事件处理程序附加到被单击的元素之前单击链接。当然,此时我们正在寻找的效果并没有发生,我们得到了一个失败的测试。

目前我们在点击之前添加了一个轻微的延迟,让初始化 JavaScript 代码有时间完成,这显然有点 hackish,增加了整体测试执行的时间,并且不能保证测试仍然不会失败,所以我们正在寻找更好的解决方案。

到目前为止,我们提出的最佳想法是将一个隐藏元素注入(inject)到 Selenium 可以等待的 DOM 中,然后再触发点击事件以了解它已准备就绪。当我们处理异步事件、删除和添加元素时,这将在开发人员时间方面产生大量额外开销。它还向我们的页面添加了应用程序真正不需要的额外内容。

有没有人有更好的策略?你做了什么来有效地解决这个问题?

最佳答案

我们迁移到 Selenium 2 (WebDriver) 并使用 Page Objects pattern使用 PageFactory/AjaxElementLocatorFactory - 一个例子是 here

关于ajax - 您如何使用 Selenium 测试 Ajax 应用程序并使其保持稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513529/

相关文章:

javascript - 当我想从steam市场获取json时,jquery json错误

Android执行功能测试命令

database - 为复杂数据库 (EAV) 生成单元测试数据

java - 如何使用 xpath 访问 div id?[selenium webdriver]

javascript - 从 Javascript 调用服务器端方法,但在将 EnablePageMethods 设置为 True 时出现错误

javascript - 使用 multipart/form-data Ajax 发布 dataURL

javascript - 在解决 promise 之前运行多个 ajax 调用

javascript - Protractor :未定义:Stacktrace

python - 无法通过 Selenium 在 python 中运行 PhantomJS

java - Selenium/Junit/pageObject : NPE, 调用方法时,该方法单击通过 @FindBy 注释创建的元素