【问题标题】:Check to see if webbrowser has loaded new page without document complete检查 webbrowser 是否已加载新页面但文档未完成
【发布时间】:2016-04-23 20:29:20
【问题描述】:

我正在编写一个程序来执行一些基本测试,并试图让它自动登录。如果我必须在每个可能的场景中使用它,似乎 documentComplete 事件会被过度使用。

我看到了一些有关 Browser ReadyState 的示例,但我无法让它们工作。

我有一个简单的方法,它找到用户名元素,输入用户名,调用 click 方法,找到密码元素,输入密码,然后调用 click 方法。

如果我使用消息框延迟该过程,那么它会起作用,因为它给了页面加载时间。

private void fillInLogin()
        {
            browser.Document.GetElementById("des_LoginName").InnerText = "myLogon";
            browser.Document.GetElementById("btnLogOn").InvokeMember("click");

            //*********WHAT CAN I PUT HERE TO CHECK TO SEE IF THOSE ELEMENTS EXIST***********

            browser.Document.GetElementById("des_Password").InnerText = "myPassword";
            browser.Document.GetElementById("btnSubmit").InvokeMember("click");

        }

【问题讨论】:

    标签: c# webbrowser-control screen-scraping


    【解决方案1】:

    您是否考虑订阅WebBrowser.DocumentCompleted 事件?它消除了等待页面加载的所有猜测,实际上是正确的方法。您不能真正依赖服务器响应在给定的等待期内完成。通常唯一的保证是您的客户端代码的超时时间,但您不想强制等待超时最大值。使用线程请求和监听回调的事件将允许您发出请求并继续向用户提供响应式 UI。

    【讨论】:

    • 如何订阅活动?这是否意味着通过调用方法将从该文档完成事件中获得响应?
    猜你喜欢
    • 2011-10-28
    • 1970-01-01
    • 2020-07-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2011-02-16
    相关资源
    最近更新 更多