1

所以我在 vb.net 中有一个循环加载网页,填写表格并点击提交

我目前分别使用这些来等待网页加载,填写表格,然后点击提交

   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

但我的问题是,在循环运行大约第五次之后,它会在具有 set 属性的行上出现错误。而且我有一种感觉,在尝试填写表格之前它没有等待网页加载,这就是它出错的原因。

有谁知道更好的方法来做到这一点?

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 回答