在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();
答案 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();
}