我正在运行这段代码:
HtmlElement.GetAttribute("onClick")尝试访问该元素的onClick属性,但返回的结果是System.__ComObject。我不知道为什么会发生这种情况,所有其他GetAttribute调用都会返回实际的字符串。
谢谢。
发布于 2013-10-02 17:37:44
首先,您可以尝试确定控件的类型;然后将对象强制转换为此类型。使用此方法可以访问元素的属性。
例如,如果您的对象是包含"onclick“方法的"div”,则必须将com对象转换为mshtml.HTMLDivElement (必须将程序集"mshtml.dll“添加到项目中才能使用mshtml类);然后可以在outerHTML属性中查找"onclick”属性。
if (doc.GetElementById("id-of-div").GetAttribute("onclick").Equals("System.__ComObject"))
{
mshtml.HTMLDivElement docCOM = (mshtml.HTMLDivElement)doc.GetElementById("id-of-div").DomElement;
string onClickStr = docCOM.outerHTML.[some string or regex operations here];
}
发布于 2012-03-17 02:22:37
示例代码
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("http://stackoverflow.com/questions/9707869/system-comobject-is-returned-when-i-use-getattribute")
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Dim a As HtmlElement = WebBrowser1.Document.GetElementById("portalLink").FirstChild
MsgBox(a.DomElement.attributes("onclick").value.ToString)
End Sub发布于 2021-11-30 06:31:00
您需要使用以下代码:
theElementCollection = WebBrowser1.Document.GetElementsByTagName("A")
For Each curElement As HtmlElement In theElementCollection
MsgBox(curElement.DomElement.attributes("onclick").value.ToString)
Nexthttps://stackoverflow.com/questions/9707869
复制相似问题