在WatiN如何等到回发完成

时间:2009-12-30 11:02:58

标签: asp.net watin

在WatiN中我怎么能等到回发完成。

例如:

// Postback response modifies update panel elsewhere on page
browser.Text("id").TypeText("asd"); 

// WatiN doesn't wait until postback is completed (what code should I replace it with?).
browser.WaitUntilComplete();

3 个答案:

答案 0 :(得分:11)

您可以检查IE是否忙碌而不是完整。

while (((SHDocVw.InternetExplorerClass)(_ie.InternetExplorer)).Busy)
        {
            System.Threading.Thread.Sleep(2000);
        }

答案 1 :(得分:6)

WaitUntilComplete无法识别ajax调用。请参阅本文(搜索WaitForAsyncPostBackToComplete),了解如何注入一些代码以使其工作:WatiN, Ajax and some Extension Methods

HTH, 的Jeroen

答案 2 :(得分:1)

如上所述,WaitForComplete适用于加载页面,但不适用于Ajax调用。

这是一个非常简单的解决方案,适用于我希望特定元素出现的情况......也许......最终。它只是循环,直到页面上存在 elementID ,或者在20秒后超时:

DateTime _startWait = DateTime.Now;
while (_startWait.AddMilliseconds(20000) > DateTime.Now && !WatiNbrowser.Elements.Exists(elementID))
                    {
                        System.Threading.Thread.Sleep(200);
                        Application.DoEvents();
                    }