正在等待使用WatiN完全加载页面

本文关键字:加载 WatiN 在等待 | 更新日期: 2023-09-27 18:29:09

我有两个问题与同一个问题有关。。。Q1)我正在使用WatiN(3.5)实现网站自动化。情况是,我想在结果页面完全加载时获得一个div标记,但WatiN不等待该页面被campletly加载,并试图对该div进行obatin,这导致div为null。这个div由AJAX填充。这是我用来避免那个错误的代码,但它不起作用。

  while (resultDiv == null)
            {
                browser.Div("ui-tabs-1").WaitUntilExists();
                resultDiv = browser.Div("ui-tabs-1"); 
            }

那么,如何使用WatiN等待页面完全加载呢?

Q2)我在这里找到了上述问题的解决方案,但我陷入了困境,因为我找不到这些接口的库参考,即IElementIBrowser。这些接口在扩展方法中使用。我也询问了这篇文章的作者,等待他的答复。我在VS2010中通过使用WatiN2.5和.Net framework 3.5来进行此应用。

正在等待使用WatiN完全加载页面

我在一个使用Ajax的网站上遇到过类似的watin问题。这是解决此问题的方法。

//点击链接/Tab/Button后,结果将加载到非Ajax网站中。我们这里有一个函数browser.WaitForComplete(),但它只有在页面处于加载状态时才能工作。但在Ajax的情况下,浏览器窗口的一部分会被更新。因此浏览器没有加载状态。

所以这个问题的一个解决方案是使用Thread.Sleep(10000);此时间可能因网站加载所需分区的正常时间而异。

Thread.Sleep可以使用,但除了等待加载确实是问题的概念证明之外,其他任何事情都应该使用Thread.Sleep。如果你的睡眠时间最长,睡眠会增加不必要的空闲时间,而等待时间越短,就会出现误报。

如果您正在测试ASP.NET Ajax站点,请参阅Jeroen在其回复中的链接:在WatiN中,如何等待回发完成-WaitForAsyncPostbackToComplete。我在一些方法和属性中使用了这个想法,以消除代码中的许多长睡眠调用。测试运行得更快,结果也更可靠。

如果在使用不同的客户端框架时,特定的JS调用不起作用,那么在循环中使用睡眠时间较短的基本轮询概念会比长睡眠时间更好。