无法在winforms webbrowser控件中获取htmlelement

时间:2011-03-21 09:08:53

标签: c# html winforms

我正在使用winforms webbrowser控件开发自动化程序。我能够在前几个网页上获得htmlelement。但是我无法从某些页面获取htmlelement,而且我使用的方法与我在前几个网页中所做的相同(少数第一页htmlelement被成功检索)。

        HtmlElement createButton = this.extendedWebBrowser2.Document.GetElementById("createButton");
        HtmlElement textArea = this.extendedWebBrowser2.Document.GetElementById("query");
        HtmlElement filename = this.extendedWebBrowser2.Document.GetElementById("filename");
        HtmlElement cancelBtn = this.extendedWebBrowser2.Document.GetElementById("cancelBtn");

它返回null,我不知道为什么它返回null,但是在页面上存在元素。为什么以及如何做,我可以检测到html元素?什么样的原因导致它无法被发现?

4 个答案:

答案 0 :(得分:1)

很久以前我上次尝试使用webbrowser控件,但在旧版本的.net中有一种方法可以使用这种方式:

HtmlElement createButton = this.extendedWebBrowser2.Document.Body.GetElementById("createButton");

注意Body

也许有帮助?

答案 1 :(得分:0)

您在等待文档加载事件吗?在文档加载完毕之前,DOM有时无法使用。

您可以订阅an event on the browser control。如果您在那里进行所有处理,那应该不是问题。

答案 2 :(得分:0)

无法获取Html元素的原因是因为Html元素嵌入在FrameSet中。要访问FrameSet:

HtmlWindow docWindow = extendedWebBrowser2.Document.Window;

foreach (HtmlWindow frameWindow in docWindow.Frames)
{
  implementation code...
}

答案 3 :(得分:0)

if (objBrowser.Document.Window != null) {
    foreach (HtmlWindow myframe in objBrowser.Document.Window.Frames) {
        HtmlElementCollection htmlControls = myframe.Document.Body.GetElementsByTagName("OPTION");
        foreach (HtmlElement optEle in htmlControls) {      
            optEle.SetAttribute("selected", "true");      
        }
    }
}