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

Зачекайте до завантаження веб-браузера? (VB 2010) - vb.net, форми, завантаження, очікування

Я шукав і шукав код, і все, що я намагався, не працює. В основному мені потрібно, щоб веб-браузер повністю завантажувався перед запуском тестового коду ...

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