/ / Počkať až na WebBrowser Load? (VB 2010) - vb.net, formuláre, načítať, čakať

Počkať až na WebBrowser Load? (VB 2010) - vb.net, formuláre, načítať, čakať

Hľadal som a hľadal kód a všetko, čo som skúšal, nefunguje. V podstate potrebujem WebBrowser plne načítať pred spustením testovacieho kódu ...

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

Ako môžete vidieť, pokúsil som sa použiť skript, aby som ma urobilprihláste sa na Xbox.com a funguje to, ale len trochu. Proces tohto kódu je TOO rýchly, nie je kontrola pravého zdrojového kódu pre reťazec hovorí "Pokračovať ...", v podstate

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

Po kliknutí na toto tlačidlo klikne na tlačidloktorý sa prihlasuje do procesu, ale musí načítať úplne novú stránku, problém s tým je, že vykoná ďalší riadok kódu príliš rýchlo a ďalší riadok kódu hľadá reťazec v nesprávnom zdrojovom kóde. Potrebujem, aby WAIT na načítanie tejto stránky, potom spustite tento riadok

RichTextBox1.Text = WebBrowser1.DocumentText

Ktorý kopíruje zdrojový kód webového prehliadačatextové pole, ktoré sa potom vyhľadá reťazec. Skúšal som všetko. Mám pocit, že WaitForPageLoad () bude fungovať skvele, ale dostanem chybu, keď mi povie, že nie je deklarovaný.Môže niekto pomôcť?

odpovede:

0 pre odpoveď č. 1

Tento kód by mal pomôcť.

Definujte globálnu premennú nazvanú úplnú a nastavte ju na hodnotu false

Dim completed = false

Teraz vo svojom webovom prehliadači dokončite tento kód

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

completed = true

End Sub

Teraz ste chceli počkať, kým váš webový prehliadač nenašiel stránku

While Not completed
End While

Všetci spolu by ste mali mať niečo také

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

1 pre odpoveď č. 2

Musíte pridať DocumentCompleted Event Handler a spustí akýkoľvek kód z príslušnej metódy. To znamená:

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

---- UPDATE WHOLE WEBBROWSER

Ak otvoríte nový projekt a vložte tento kód (a pridajte TextBoxes/RichTextBox do vášho formulára), fungovalo by bez problémov:

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

-1 pre odpoveď č. 3
  For I As Integer = 0 To 500
If MyBrowser.ReadyState = WebBrowserReadyState.Complete Then Exit For
Threading.Thread.Sleep(1)
Application.DoEvents()
Next