1

私はこれを数回行ったことがありますが、今度は HTA vbscript がオブジェクトがこのプロパティまたはメソッド 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>
4

2 に答える 2

1

わかりました。iframe がすべての問題を引き起こしていました。同じエラー メッセージが表示される場合は、スクレイピングしようとしているサイト内のフォームと要素が iframe の一部ではないことを確認してください。サイトのバックワードを処理して、iframe ソースを取得し、それを vbscript ではなく vbscript に入れます。

幸運!

于 2012-09-04T19:56:44.613 に答える
0

おそらく原因があるため、待機サブを無視することは困難です。uouは次のようなものを使用する必要がありますが、一定の時間を使用しているようです

Do Until IE.readyState = 4
  Wscript.Sleep 100
Loop

また、問題が発生した場合は、オブジェクト レベルを 1 行に 1 つずつ分離し、デバッグしやすくします。

With IE
  With .document
    With ...

動作するまでコメントアウトします

これらは一般的なガイドラインです。実際の URL と待機サブを公開すると、より簡単なアドバイスを提供できます。

于 2012-09-04T19:19:01.263 に答える