In WatiN how to wait until postback is complete

2019-03-16 09:23发布

in WatiN how can I wait until postback is complete.

For example:

// 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();

标签: asp.net watin
3条回答
SAY GOODBYE
2楼-- · 2019-03-16 09:35

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();
                    }
查看更多
够拽才男人
3楼-- · 2019-03-16 09:42

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

查看更多
beautiful°
4楼-- · 2019-03-16 09:42

You could check if IE is busy rather than complete.

while (((SHDocVw.InternetExplorerClass)(_ie.InternetExplorer)).Busy)
        {
            System.Threading.Thread.Sleep(2000);
        }
查看更多
登录 后发表回答