创建用于访问HTML表单中的HTML对象的HTML DOM对象

创建用于访问HTML表单中的HTML对象的HTML DOM对象,dom,vbscript,Dom,Vbscript,有谁能帮我用VB脚本创建一个HTMLDOM对象吗。我必须浏览HTML表单并在文本框中输入值,或者使用vb脚本和HTMLDOM函数从下拉列表中选择值 我知道,要创建XMLDOM对象,我们可以使用下面的语句,因此任何类似下面的语句都可以创建HTMLDOM Set Xmlobj = CreateObject ("Microsoft.XMLDOm") Set Htmlobj = CreateObject ("Microsoft.HtmlDom") ' Is this avalibale when I

有谁能帮我用VB脚本创建一个HTMLDOM对象吗。我必须浏览HTML表单并在文本框中输入值,或者使用vb脚本和HTMLDOM函数从下拉列表中选择值

我知道,要创建XMLDOM对象,我们可以使用下面的语句,因此任何类似下面的语句都可以创建HTMLDOM

Set Xmlobj = CreateObject ("Microsoft.XMLDOm")

Set Htmlobj = CreateObject ("Microsoft.HtmlDom")  ' Is this avalibale when I tried it shows     error for object creattion, other workaround available.
没有“HTMLDOM”对象,因为与HTML相关的内容比与XML相关的内容多得多。它需要JavaScript处理、会话处理、CSS处理、HTTP请求、cookie处理、缓存等来将文本HTML转换为有意义的内存中文档对象

如果所有这些都实现了,您将拥有一个完整的浏览器。这就是为什么没有这样的COM对象

对于您的任务,您可以通过COM自动化直接使用Internet Explorer:

Option Explicit

Dim IE, queryField

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.Navigate "http://www.google.com"

While IE.Busy Or IE.readyState <> 4
     WScript.Sleep 100
Wend

Set queryField = GetFormFieldByName(IE.document, "q")

If Not queryField Is Nothing Then
    QueryField.value = "test"
    QueryField.form.submit
End If

WScript.Sleep 5000
IE.Quit
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Function GetFormFieldByName(Parent, FindName)
    Dim FormFields, FormField

    Set GetFormFieldByName = Nothing
    Set FormFields = Parent.getElementsByTagName("INPUT")

    For Each FormField In FormFields
        If UCase(FormField.Name) = UCase(FindName) Then
            Set GetFormFieldByName = FormField
            Exit For
        End If
    Next
End Function
选项显式
迪米,克雷菲尔德
设置IE=CreateObject(“InternetExplorer.Application”)
可见=真实
即“导航”http://www.google.com"
当IE忙或IE readyState 4时
WScript.Sleep 100
温德
设置queryField=GetFormFieldByName(即文档“q”)
如果不是,那么queryField什么都不是
QueryField.value=“测试”
QueryField.form.submit
如果结束
WScript.Sleep 5000
即退出
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
函数GetFormFieldByName(父函数,FindName)
调暗窗体字段,窗体字段
设置GetFormFieldByName=Nothing
Set FormFields=Parent.getElementsByTagName(“输入”)
对于FormFields中的每个FormField
如果UCase(FormField.Name)=UCase(FindName),则
设置GetFormFieldByName=FormField
退出
如果结束
下一个
端函数
输出:-


您好

非常感谢!!!一个疑问是,在这种方法中,我们使用InternetExplorer的自动化对象模型来创建IE对象。我们正在结合HTMLDOM属性和函数。我的疑问是,我们能否将任何对象或属性(HTMLDOM)链接到createdIEobject?我的第二个疑问是,为什么我们要将IE与document属性联系起来,而这里使用的“document”属性或对象是HTML DOm或IEs自动化对象模型。
IE.document
与您在浏览器内部运行的JavaScript中看到的
document
对象完全相同。使用它,您可以执行IE支持的任何操作。这就是为什么它被称为“自动化”:您使用外部脚本来远程控制IE。好的,我可以理解,只有使用IE.document,我们才能调用HTML DOM的其他方法和属性。但这个术语“文档”在这里是一个对象、方法还是属性?它是IE对象的属性。这有什么区别?
Set oDoc = CreateObject("HTMLFILE")

oDoc.write "<html><head><title></title></head><body><div id='div'>hello</div></body></html>"

Response.Write oDoc.getElementById("div").innerHTML 
WScript.Echo oDoc.getElementById("div").innerHTML