WebBrowser DocumentCompleted イベントに関する他の質問を検索しましたが、私が抱えている正確な問題を抱えている人は誰もいないようです。
航空会社のウェブサイトでフライト検索を自動化しようとしています。私が使用する最初の URL は、日付の部分を除いて毎回同じなので、文字列を組み合わせて WebBrowser を簡単に URL に移動させることができます。ただし、そのページは、価格が表示される前にクリックする必要がある「続行」ボタンがある免責事項ページです。フォームで一連のボタンを使用する場合、button1 をクリックして最初の URL にアクセスし、button2 をクリックして続行ボタンをクリックします。それは正常に動作します。
しかし、button2 をクリックする必要をなくしたかったので、WebBrowser DocumentCompleted イベントを使用しようとしました。私が抱えている問題は、最初のページが Web ブラウザーに完全にロードされないように見えるため、ボタンがクリックされないことです。
これは、2 つのボタンと 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
ありがとう!