/ / WebBrowser Loadまで待ちますか? (VB 2010) - vb.net、フォーム、ロード、待機

WebBrowser Loadまで待ちますか? (VB 2010) - vb.net、フォーム、ロード、待機

私はコードを検索して検索しましたが、私が試したことはすべて動作しません。 基本的には、テストコードを実行する前にWebBrowserを完全にロードする必要があります...

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

WebBrowser1.Document.GetElementById("login").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("passwd").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.GetElementById("SI").InvokeMember("Click")

Where I need to insert the WaitForPageLoad()


RichTextBox1.Text = WebBrowser1.DocumentText
If InStr(RichTextBox1.Text, "To continue, create an Xbox profile") Then
MsgBox("You do not have an xbox account associated with this gamertag, please log into xbox.com with the account then create an xbox profile.")
Else
MsgBox("nothing")

End If

あなたが見ることができるように、私はスクリプトを使って私を作ろうとしましたXbox.comにログインすると動作しますが、ちょっとしたことです。このコードのプロセスは非常に速く、「続ける」という文字列を正しいソースコードでチェックすることはできません。

    WebBrowser1.Document.GetElementById("login").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("passwd").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.GetElementById("SI").InvokeMember("Click")

クリックするとボタンをクリックしますログイン処理はしますが、新しいページ全体をロードする必要があります。問題は、次の行のコードを速く実行し、次の行のコードが間違ったソースコードでその文字列を検索することです。そのページがロードされるのを待ってから、この行を実行する必要があります

RichTextBox1.Text = WebBrowser1.DocumentText

ウェブブラウザのソースコードをコピーします文字列が検索されるテキストボックス。私はすべてを試しました。私はWaitForPageLoad()がうまくいくように感じていますが、私にはそれが宣言されていないというエラーが表示されます。

回答:

回答№1は0

このコードは役に立ちます。

completeというグローバル変数を定義し、それをfalseに設定します

Dim completed = false

今すぐあなたのWebブラウザのドキュメントでこのコードを入力してください

   Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

completed = true

End Sub

今度はあなたのウェブブラウザがページをロードするまで待っていますか?

While Not completed
End While

一緒にあなたはこのようなものを持っているはずです

Public Class WaitForWebBrowser

Dim completed = False

Sub Main()
WebBrowser1.Navigate("http://google.com")

While Not completed
End While
"when the web browser is done complete will be set to true and will exit the while loop and continue your code

End Sub

Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

completed = true

End Sub

End Class

回答№2の場合は1

あなたは DocumentCompleted Event Handler 対応するメソッドから任意のコードをトリガーします。あれは:

Private Sub startBrowser()

AddHandler WebBrower1.DocumentCompleted, AddressOf WebBrowser_DocumentCompleted

WebBrower1.Navigate("http://...")

End Sub

Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
"CALL ALL YOUR CODE FROM HERE
End Sub

----すべてのWEBBROWSERを更新する

新しいプロジェクトを開いてこのコードを貼り付けて TextBoxes/RichTextBox あなたのフォームに)、それは問題なく動作します:

Public Class Form1
Friend WithEvents webBrowser0 As New WebBrowser
Friend WithEvents tabs As New TabControl
Friend WithEvents tabPage0 As New TabPage

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
startBrowser()
End Sub
Public Sub startBrowser()

Dim url As String = "http://..."

tabs.Controls.Add(tabPage0)
tabPage0.Controls.Add(webBrowser0)
AddHandler webBrowser0.DocumentCompleted, AddressOf WebBrowser_DocumentCompleted

webBrowser0.Navigate(url)

End Sub

Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

webBrowser0.Document.GetElementById("login").SetAttribute("value", TextBox1.Text)
webBrowser0.Document.GetElementById("passwd").SetAttribute("value", TextBox2.Text)
webBrowser0.Document.GetElementById("SI").InvokeMember("Click")



RichTextBox1.Text = webBrowser0.DocumentText
If InStr(RichTextBox1.Text, "To continue, create an Xbox profile") Then
MsgBox("You do not have an xbox account associated with this gamertag, please log into xbox.com with the account then create an xbox profile.")
Else
MsgBox("nothing")

End If

End Sub
End Class

回答№3の場合は-1
  For I As Integer = 0 To 500
If MyBrowser.ReadyState = WebBrowserReadyState.Complete Then Exit For
Threading.Thread.Sleep(1)
Application.DoEvents()
Next