WebBrowser DocumentCompleted在我的情况下是无用的

本文关键字:无用 情况下 我的 DocumentCompleted WebBrowser | 更新日期: 2023-09-27 18:03:37

首先,我已经修复了WebBrowser,现在我在Windows窗体中正确地看到了页面。我遵循这个链接,并将其引用到IE11.0,所以我的windows窗体中的WebBrowser控件是IE11.0浏览器实例。

我在构造函数中有这个形式:

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);

然后是事件处理程序

public void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    { 
        txtLoad.Text = (Convert.ToInt32((txtLoad.Text)) + 1).ToString();
        var webBrowser = sender as WebBrowser;
        webBrowser.Document.GetElementById("gwt-uid-126").InvokeMember("click");
    }

一切从点击按钮开始:

void BtnTestClick(object sender, EventArgs e)
    {
        webBrowser1.Navigate(@"https://play.google.com/apps/publish/?dev_acc=06010154238306490792#AppListPlace");
    }

单击调用不执行任何操作。我尝试了这里列出的所有方法,但一无所获。为什么我可以在屏幕上看到按钮,但不能在代码中引用它?如果按钮没有加载,为什么documentCompleted会触发?我怎样才能拿到按钮?然后点击它?

WebBrowser DocumentCompleted在我的情况下是无用的

修复:

webBrowser1.Navigate(@"https://play.google.com/apps/publish/?dev_acc=06010154238306490792#AppListPlace");
while (WebBrowser1.ReadyState != WebBrowserReadyState.Complete) {
         txtLoad.Text = WebBrowser1.ReadyState.ToString();
        Application.DoEvents();
        System.Threading.Thread.Sleep(1);
    }
webBrowser1.Document.GetElementById("gwt-uid-126").InvokeMember("click");


即使文档没有完全加载,也会调用WebBrowserDocumentCompleted事件。
示例:
让我们说有2个脚本元素在页面的源代码:

<script src="1.js"></script>
//Here There Is A Call To WebBrowserDocumentCompleted 
<script src="2.js"></script>
//Here There Is A Call To WebBrowserDocumentCompleted
............
body
.............
</html>
//Here There Is A Call To WebBrowserDocumentCompleted

浏览器在加载完脚本/样式表之后还在调用这个事件——页面还没有完全加载。