In WatiN how to wait until postback is complete

人盡茶涼 提交于 2019-12-09 05:01:28

问题


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

回答1:


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




回答2:


You could check if IE is busy rather than complete.

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



回答3:


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


来源:https://stackoverflow.com/questions/1979610/in-watin-how-to-wait-until-postback-is-complete

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!