in WatiN how can I wait until postback is complete.
For example:
// Postback res开发者_开发技巧ponse 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();
You could check if IE is busy rather than complete.
while (((SHDocVw.InternetExplorerClass)(_ie.InternetExplorer)).Busy)
{
System.Threading.Thread.Sleep(2000);
}
WaitUntilComplete doesn't recognize ajax calls. See this article (search on WaitForAsyncPostBackToComplete) on how to inject some code to make that work as well: WatiN, Ajax and some Extension Methods
HTH, Jeroen
As mentioned WaitForComplete is fine for a loading page, but doesn't work for Ajax calls.
Here's a very simple solution that works well for my situation where I expect a specific element to appear... perhaps... eventually. It simply loops until elementID exists on a page, or times out after 20 seconds:
DateTime _startWait = DateTime.Now;
while (_startWait.AddMilliseconds(20000) > DateTime.Now && !WatiNbrowser.Elements.Exists(elementID))
{
System.Threading.Thread.Sleep(200);
Application.DoEvents();
}
精彩评论