/ / Изчакайте до зареждането на WebBrowser? (VB 2010) - vb.net, формуляри, зареждане, чакане

Изчакайте до зареждането на WebBrowser? (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")

След като направи това, кликне върху бутонакойто прави процеса на вписване, но трябва да зареди цяла нова страница, проблемът с това е, че той изпълнява прекалено бързо следващия ред на кода и следващият ред от кода търси в този низ в грешен изходен код. Имам нужда от WAIT, за да се зареди тази страница, след което го пуснете

RichTextBox1.Text = WebBrowser1.DocumentText

Което копира изходния код на уеб браузератекстова кутия, която след това се търси за низа. Опитах всичко. Чувствам се като WaitForPageLoad () ще работи чудесно, но ми се грешка, казвайки ми, че не е обявено.Може ли някой да помогне?

Отговори:

0 за отговор № 1

Този код трябва да помогне.

Определете глобална променлива, наречена "пълна", и я задайте като фалшива

Dim completed = false

Сега в документа си за уеб браузър въведете този код

   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

1 за отговор № 2

Трябва да добавите 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

-1 за отговор № 3
  For I As Integer = 0 To 500
If MyBrowser.ReadyState = WebBrowserReadyState.Complete Then Exit For
Threading.Thread.Sleep(1)
Application.DoEvents()
Next