Javascript:完成DOM操作时的事件

标签 javascript watin

我们有一个通过 Ajax 调用填充的表。在我们的 Watin 测试中,我们想要检查这个表的内容。我们已经设法找出填充表的 javascript 何时停止运行,因此该部分工作正常。 但是,在 IE 中,在 javascript 填充 DOM 完成与 DOM 完全更新以供 Watin 检测更改之间似乎存在延迟。

现在我们有一个 Thread.Sleep(500) 来完成这项工作,但我不喜欢这样。在 DOM 完全更新的那一刻是否有事件或东西可以捕捉?

编辑:示例代码

var tbody = $("#myID tbody");
tbody.empty();
$.each(item.Producten, function (i, item) {
    var row = "<tr><td>" + item.Property + "</td></tr>";
    tbody.append(row);
});

最佳答案

我不认为有这样的事件。如果是这样,WatiN 就会使用它。但是当 WatiN 等待某事时,例如。当您使用 WaitUntil 方法时(有时您可以间接使用它,例如在读取 Exists 属性时),WatiN 只是使 Thread.Sleep在循环中调用(参见 TryFuncUntilTimeOut 类)。

几乎您需要的一切都可以通过使用WaitUntil 方法来实现,但有时它确实很棘手。如果我是你,我会多尝试这种方法(特别是如果你是 WatiN 的新手),但如果花费太多时间,我会使用 Thread.Sleep(500) 和算了。

我想补充一点,如果有可能在示例代码的末尾添加一些用于测试目的的 javascript 代码,您可以设置某种标志,例如 loadingCompleted = 1 ,并使用 TryFuncUntilTimeOut(我不记得是否有合适的 WaitUntil 方法)等待直到 loadingCompleted 设置为 1。你可以当然使用 WatiN 读取此变量 - 请参阅 Document.Eval 方法。

关于Javascript:完成DOM操作时的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449257/

相关文章:

javascript - 仅提供请求的内容范围

javascript - 添加和检索到 mysql

javascript - 单击 href=#SomeDivName 时页面向下滚动

c# - WatiN NativeElement.GetElementBounds() - 测量单位是什么?

等待 UnauthorizedAccessException 错误

javascript - 在 window.open() 上运行 Firefox 扩展

在 AppHarbor 上等待 : COMException, "Server execution failed"

testing - 是否有一种与浏览器无关的方法来检测 Watin 的客户端脚本错误?

asp.net-mvc - 如何使用 Watin 和 SpecFlow 编写与 HTML 标记不紧密耦合的测试?

javascript - 如何制作 Javascript 阶乘函数?