【问题标题】:In WatiN how to wait until postback is complete在WatiN中如何等待回发完成
【发布时间】:2009-12-30 11:02:57
【问题描述】:

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

【问题讨论】:

    标签: asp.net watin


    【解决方案1】:

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

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

    【讨论】:

    • 很遗憾我不能将两个答案标记为正确,但我会记住你的技巧以备将来使用
    • +1 我有点怀疑,但这与 Ajax 完美结合!谢谢你的提示! :-)
    【解决方案2】:

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

    HTH, 杰伦

    【讨论】:

    • 谢谢。这正是我后来发现的。奇怪的是我在搜索的前 3 天没有找到这篇文章
    【解决方案3】:

    如前所述,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();
                        }
    

    【讨论】:

    • 既然你在一个 STA 线程中,你为什么要打电话给 Application.DoEvents()
    • 确实是多余的。这是我刚开始 C# 时的一些旧代码,我不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 2016-03-09
    • 2016-02-17
    相关资源
    最近更新 更多