如何从WebBrowser组件获取HTMLElement的所有属性
本文关键字:属性 HTMLElement 获取 WebBrowser 组件 | 更新日期: 2023-09-27 18:24:13
我正在使用遍历DOM
webBrowser.Document.Body.Parent.Children
我想获取特定HTMLElement
的所有属性。然而,HTMLElement
只有一个getAttribute
方法。我正在寻找更像htmlelement.attributes[n]
的东西。因为我事先不知道这些属性。
如果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中工作。其他人未知。