HTA VBScript - IE CreateObject(InternetExplorer.Application)IE.Document.form1不支持属性或方法

时间:2012-09-04 18:12:11

标签: internet-explorer vbscript createobject

我已经这样做了几次,但是我不知道为什么这次我的HTA vbscript对我大吼大叫关于Object不支持这个属性或方法IE.Document.form1?

忽略Wait IE,2000 subs。

Function server_details(server_name)
    dim returnArray(6)

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "http://website/Default.aspx"
    Wait IE,2000
    With IE.Document.form1
        .txtServerName.value = server_name
        .Button1.click
    End With

    Wait IE,4000

    'get info returned
    With IE.Document.all
        serverOS = .txtOS.value
        serverApp = .txtBusinessApp.value
        serverClass = .txtServerClass.value
        serverHost = .txtHost.value
        serverEnv = .txtSupportEnvironment.value
        serverCheckout = .txtCheckoutStatus.value
    End With

    IE.Quit
    Set IE = Nothing
    returnArray(0) = serverOS
    returnArray(1) = ServerApp
    returnArray(2) = serverClass
    returnArray(3) = serverHost
    returnArray(4) = serverEnv
    returnArray(5) = serverCheckout
    server_details = returnArray
End Function

我的HTA vbscript中也有这个功能,它运行正常。

Function subnetDetails(server_ip)
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = False
    IE.Navigate "http://otherwebsite/detail.aspx"
    Wait IE,2000
    With IE.Document.aspnetForm
        .[ctl00$_SUMMARY$txtIP].value = server_ip
        .[ctl00$_SUMMARY$btnLoad].click
    End With

    'webscrape for TABLE id="ctl00_SUMMARY_gvSubnets"
    Wait IE,9000
    responseHTML = IE.Document.getElementByID("ctl00_SUMMARY_gvSubnets").outerHTML
    IE.Quit
    Set IE = Nothing

    subnetDetails = responseHTML
End Function

发现form1在iframe中,可能就是我无法引用它的原因。有什么想法吗?

<iframe id="ctl00_ContentPlaceHolder1_I1" bordercolor="White" name="I1" src="CSIS.aspx" style="border-style: none; overflow: auto; height: 2500px; width: 1100px;" frameborder="no" scrolling="no">

<html>
    <head>
        <body>
            <form name="form1" bla bla"


 </iframe>

2 个答案:

答案 0 :(得分:1)

好的,所以想通了。 iframe造成了所有麻烦。对于那些具有相同错误消息的人,请尝试检查表单,并且元素不是您尝试抓取的站点中的iframe的一部分。网站中的工作后缀抓取iframe源并将其放入您的vbscript而不是您拥有的那个。

祝你好运!

答案 1 :(得分:0)

很难忽略你的等待因素,因为可能存在原因。您似乎使用固定的时间,而您应该使用

之类的东西
Do Until IE.readyState = 4
  Wscript.Sleep 100
Loop

如果遇到问题,最好每行分隔一个对象级别,更容易调试

With IE
  With .document
    With ...

并注释掉它直到它起作用

这些oare通用指南,如果您发布真实的URL和等待子,我们可以提供更直接的建议。