如何从WebBrowser组件获取HTMLElement的所有属性

本文关键字:属性 HTMLElement 获取 WebBrowser 组件 | 更新日期: 2023-09-27 18:24:13

我正在使用遍历DOM

webBrowser.Document.Body.Parent.Children

我想获取特定HTMLElement的所有属性。然而,HTMLElement只有一个getAttribute方法。我正在寻找更像htmlelement.attributes[n]的东西。因为我事先不知道这些属性。

如何从WebBrowser组件获取HTMLElement的所有属性

如果wbMain是WebBrowser1控件,请执行以下操作。

首先,你需要获得元素的引用,比如说你想访问页面的第一个<A>链接,如果你想的话,你可以循环浏览所有链接。

这是在VB中,但在C#中是一样的,只是语法不同。

Dim i As Integer
Dim aElement As HTMLAnchorElement = wbMain.Document.All.getElementByTagName("A")(0)
For i = 0 To aElement.attributes.length - 1
  MsgBox aElement.attributes.item(i).name & "=" & aElement.attributes.item(i).value
Next i

这将遍历所有属性,并以name=value格式在MSGBOX中显示。

如果您想按名称(属性名称)检索它,只需使用aElement.getAttribute("target")调用即可从链接中检索目标属性值。

如果您想确认您得到了正确的对象/元素,只需执行aElement.outerHTML即可获得该元素的完整HTML代码。

由于我使用的是pre。NET版本,如果给你带来麻烦,可以随意将声明从HTMLAnchorElement更改为IHTMLAnchorElement。当然,如果你想遍历页面上的所有元素,你可以只使用IHTMLElement,那么你只需要为页面上的第一个元素使用wbMain.Document.all(0),或者循环到.all.length-1即可遍历所有元素。请记住,如果使用嵌套For循环,请不要使用i两次,使用j表示其中一个循环:)。

让我知道这是否回答了你的问题,或者我是否可以做更多的事情来帮助你解决你的问题。

在您可以使用的情况下,您可以使用HtmlAgilityPack来解析html文档

var doc = new HtmlAgilityPack.HtmlDocument();
   doc.Load(FileName);
   var node = doc.DocumentNode.SelectNodes("//NameofHtmlTag")[0];
   foreach (HtmlAgilityPack.HtmlAttribute attri in node.Attributes)
    {
       //iterate through attributes
    }    
到目前为止,

只知道三个非loop方法。不幸的是,似乎没有人能在任何给定的标签上获得所有可能的属性。或者,请参阅上的attr标记表https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes

// if someTagID (t) is a jsObj -- note, needs JSON.stringify to print.
// tip: (x,null," ") args adds newlines per key-value pair for print.
var x = Object.getOwnPropertyDescriptors(t)
JSON.stringify(x)
// else if (t) is an element via createElement, plain html etc -- see:
// NodeMap, name and value -- note, outputs to log only.
var x = t.attributes 
x.someAttr 
x.someAttr.value
// or Array -- note, no values without getAttribute()
var x = t.getAttributeNames()
t.getAttribute(x[n])

输出到:var,然后页面(打印)或console(日志)。所有这些都是纯js,可以在es6 chrome和firefox中工作。其他人未知。