我已经搜索了有关 WebBrowser DocumentCompleted 事件的其他问题,但似乎没有人遇到我遇到的确切问题。
我正在尝试在航空公司网站上自动搜索航班。我使用的第一个 url 每次都是相同的,除了日期部分,所以很容易让 WebBrowser 通过组合字符串来访问 URL。但是,该页面是一个免责声明页面,其中包含一个“继续”按钮,需要在显示价格之前单击该按钮。如果我在表单上使用一系列按钮,我可以通过单击 button1 来访问第一个 URL,然后通过单击 button2 来单击继续按钮。它工作正常。
但是,我想消除单击 button2 的需要,因此尝试使用 WebBrowser DocumentCompleted 事件。我遇到的问题是第一页似乎永远不会完全加载到网络浏览器中,因此永远不会单击该按钮。
这是我用于两个按钮和 DocumentCompleted 事件的代码
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = fullURL
WebBrowser1.Navigate(fullURL)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim allElements As HtmlElementCollection = WebBrowser1.Document.All
For Each webpageelement As HtmlElement In allElements
If webpageelement.GetAttribute("src") = proceedbuttonattribute Then
webpageelement.InvokeMember("click")
End If
Next
End Sub
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
If TextBox1.Text.StartsWith(firstURL) = True Then 'make sure that button is only clicked after first webpage loads
Dim allElements As HtmlElementCollection = WebBrowser1.Document.All
'Click 'Proceed to Booking' button
For Each webpageelement As HtmlElement In allElements
If webpageelement.GetAttribute("src") = proceedbuttonattribute Then
webpageelement.InvokeMember("click")
End If
Next
End If
End Sub
谢谢!