有更好的方法做到这一点

问题描述

| 所以我在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属性的行上运行了srrors。而且我有一种感觉,它在尝试填写表单之前没有等待网页加载,这就是为什么它会出错。 有谁知道更好的方法吗?     

解决方法

        您可以使用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
对于表单提交,您可以使用像这样的forms'Submit()方法
browser.Document.GetElementById(\"text\").DOMElement.form.submit()
    ,        元素\“ text \”可能尚未加载或不在页面上? 您可以制作一些JavaScript来完成该任务,然后将其注入页面。 这是在javascript中制作\“ click \”的方法: https://developer.mozilla.org/en/DOM/document.createEvent     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...