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

C# 正在等待使用WatiN完全加载页面,c#,.net,visual-studio-2010,watin,C#,.net,Visual Studio 2010,Watin,我有两个问题和同一个问题有关。。。 Q1)我正在使用WatiN(3.5)实现网站的自动化。 这种情况是,当结果页面完全加载时,我希望获得一个div标记,但WatiN不等待该页面完全加载,而是尝试删除该div,这将导致获取空div。这个div由AJAX填充。这是我用来避免那个错误的代码,但它不起作用 while (resultDiv == null) { browser.Div("ui-tabs-1").WaitUntilExists()

我有两个问题和同一个问题有关。。。 Q1)我正在使用WatiN(3.5)实现网站的自动化。 这种情况是,当结果页面完全加载时,我希望获得一个div标记,但WatiN不等待该页面完全加载,而是尝试删除该div,这将导致获取空div。这个div由AJAX填充。这是我用来避免那个错误的代码,但它不起作用

  while (resultDiv == null)
            {
                browser.Div("ui-tabs-1").WaitUntilExists();
                resultDiv = browser.Div("ui-tabs-1"); 
            }
那么,如何使用WatiN等待页面完全加载呢

Q2)我找到了上述问题的解决方案,但由于无法找到这些接口(即IELENTIBrowser的库参考,我陷入了困境。这些接口用于扩展方法中。 我还询问了那篇文章的作者,等待他的答复。
我是在VS2010中使用WatiN 2.5和.Net framework 3.5实现此应用程序的。

我在使用Ajax的站点上遇到了与WatiN类似的问题。 这是解决这个问题的方法

//点击link/Tab/按钮后,结果将加载到非Ajax网站中。 我们这里有一个函数,
browser.WaitForComplete()
,但它只在页面处于加载状态时工作。但在使用Ajax的情况下,浏览器窗口的一部分会得到更新。所以浏览器没有加载状态

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

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

//点击link/Tab/按钮后,结果将加载到非Ajax网站中。 我们这里有一个函数,
browser.WaitForComplete()
,但它只在页面处于加载状态时工作。但在使用Ajax的情况下,浏览器窗口的一部分会得到更新。所以浏览器没有加载状态

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

线程。可以使用睡眠,但不能用于证明等待加载确实是线程问题的概念之外的任何事情。应避免睡眠。如果您睡眠的时间最长,则睡眠会增加不必要的空闲时间,如果等待的时间较短,则会导致误报失败

如果您正在测试ASP.NET Ajax站点,请参见Jeroen在其回复中的链接:-WaitForAsyncPostbackToComplete。我将这个想法用于一些方法和属性,以消除代码中的大量长睡眠调用。测试速度更快,结果更可靠

如果特定的JS调用在使用不同的客户端框架时无法工作,在循环中使用短睡眠的基本轮询概念将比长睡眠更好。

Thread.Sleep可以使用,但除了证明等待加载确实是线程的问题这一概念之外的任何东西都可以使用。应该避免睡眠。如果您睡眠的时间最长,则睡眠会增加不必要的空闲时间,如果等待的时间较短,则会导致误报失败

如果您正在测试ASP.NET Ajax站点,请参见Jeroen在其回复中的链接:-WaitForAsyncPostbackToComplete。我将这个想法用于一些方法和属性,以消除代码中的大量长睡眠调用。测试速度更快,结果更可靠


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

当然,如果适用,您也可以使用
WaitUntilContainsText()
。您也可以使用
WaitUntilContainsText()
当然,如果适用。