Waiting for page to be fully loaded using WatiN
我有两个与同一问题相关的问题...
Q1) 我正在使用 WatiN(3.5) 来实现网站的自动化。
情况是我想在结果页面完全加载时获得一个 div 标签,但 WatiN 不等待该页面完全加载并尝试获取该 div 导致 div 为空。此 div 由 AJAX 填充。这是我用来避免该错误的代码,但它不起作用。
1 2 3 4 5 | while (resultDiv == null) { browser.Div("ui-tabs-1").WaitUntilExists(); resultDiv = browser.Div("ui-tabs-1"); } |
那么如何使用 WatiN 等待页面完全加载?
Q2) 我在这里找到了解决上述问题的方法,但由于找不到这些接口(即 IElement 和 IBrowser)的库引用,我陷入了困境。这些接口在扩展方法中使用。
我也问过那篇文章的作者,等待他的回复。
我正在通过在 VS 2010 中使用 WatiN 2.5 和 .Net framework 3.5 进行此应用。
我在使用 Ajax 的网站上遇到过类似的 watin 问题。
这是解决此问题的方法。
//点击非Ajax网站加载结果的链接/Tab/Button后。
我们这里有一个函数,
所以这个问题的一个解决方案是
使用
可以使用Thread.Sleep,但除了概念证明之外,等待加载确实是Thread.Sleep 应该避免的问题。如果您在操作将要花费的最长时间内睡眠,睡眠会增加不必要的空闲时间,并在等待较少时间时给出误报失败。
如果您正在测试 ASP.NET Ajax 站点,请在此处查看 Jeroen 在他的回复中的链接:在 WatiN 如何等待回发完成 - WaitForAsyncPostbackToComplete。我将这个想法用于一些方法和属性,以摆脱我的代码中大量的长时间睡眠调用。测试运行得更快,结果更可靠。
如果特定的 JS 调用在您使用不同的客户端框架时无法工作,那么在循环中使用较短睡眠的基本轮询概念会比长时间睡眠更好。