我们有一个通过 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/