1

だから私はvb.netにウェブページをロードし、フォームに記入して送信をクリックするループを持っています

私は現在、これらをそれぞれ、Webページが読み込まれるのを待って、フォームに記入して、送信をクリックするために使用しています

   Do While Not browser.ReadyState = WebBrowserReadyState.Complete

            System.Windows.Forms.Application.DoEvents()
        Loop

        browser.Document.GetElementById("text").SetAttribute("value", message)

  For Each element As HtmlElement In browser.Document.GetElementsByTagName("input")


        If element.GetAttribute("type") = "submit" Then

            element.InvokeMember("click")

        End If
    Next

しかし、私の問題は、ループが5回実行された後、設定された属性を持つ行でエラーが発生することです。そして、フォームに入力しようとする前にWebページが読み込まれるのを待っていないような気がします。そのため、エラーが発生しています。

これを行うためのより良い方法を知っている人はいますか?

4

2 に答える 2

1

DocumentCompletedイベントを使用できます。このイベントにより、ドキュメントの準備が整い、必要なすべてのセクションが読み込まれます。

Private Sub browser_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles browser.DocumentCompleted
    ' YOUR FORM FILLING CODE HERE


End Sub

フォームの送信には、次のようなフォームのsubmit()メソッドを使用できます。

browser.Document.GetElementById("text").DOMElement.form.submit()
于 2011-06-01T05:55:19.913 に答える
0

要素「テキスト」がまだロードされていないか、ページにない可能性がありますか?

そのタスクを実行するための JavaScript を作成し、それをページに挿入することができます。

JavaScript で「クリック」する方法は次のとおりです: https://developer.mozilla.org/en/DOM/document.createEvent

于 2011-05-31T21:27:24.250 に答える