我有以下功能:
Public Sub performautowebrowserOperations()
Try
For Each link As HtmlElement In WebBrowser2.Document.GetElementsByTagName("input") 'sometimes throws a null reference exception
If link.GetAttribute("value") IsNot Nothing Then
If link.GetAttribute("value") = "Compare prices" Then
link.InvokeMember("click")
End If
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
有时注释行会抛出 NullReferenceException。为什么会这样,如何解决?
最佳答案
我会更改 GetElementsByTagName
,使其位于 For Each 语句之外,这样可以更轻松地检查 Collection 是否为 Null 或 Empty。
Public Sub performautowebrowserOperations()
Try
Dim elements As HtmlElementCollection = WebBrowser2.Document.GetElementsByTagName("input")
If Not IsNothing(elements) And elements.Count > 0 Then
For Each link As HtmlElement In elements
If link.GetAttribute("value") IsNot Nothing Then
If link.GetAttribute("value") = "Compare prices" Then
link.InvokeMember("click")
End If
End If
Next
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
关于vb.net - 如何在 foreach 循环中不处理任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12273327/