/ / WebBrowser लोड तक प्रतीक्षा करें? (वीबी 2010) - vb.net, रूप, लोड, प्रतीक्षा करें

WebBrowser लोड तक प्रतीक्षा करें? (वीबी 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

उत्तर № 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

---- पूरे वेब ब्राउजर अद्यतन करें

यदि आप एक नई परियोजना खोलते हैं और इस कोड को पेस्ट करते हैं (और जोड़ें 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