HTA VBScript — IE CreateObject(InternetExplorer.Application) IE.Document.form1 не поддерживает свойство или метод

Я делал это несколько раз, однако я не уверен, почему на этот раз мой HTA vbscript кричит мне о том, что Object не поддерживает это свойство или метод IE.Document.form1?

Игнорируйте подождите IE, 2000 подписчиков.

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>

person Jim    schedule 04.09.2012    source источник
comment
Хорошо, может быть на что-то. Похоже, что страница, которую я пытаюсь удалить, использует iframe. Форма1 находится в iframe с именем ct100_ContentPlaceHolder1_T1. См. правку выше.   -  person Jim    schedule 04.09.2012


Ответы (2)


Ок, так разобрался. iframe вызывал все проблемы. Для тех, у кого такое же сообщение об ошибке, попробуйте проверить, что форма и элементы не являются частью iframe на сайте, который вы пытаетесь очистить. Работайте с обратными словами на сайте, возьмите источник iframe и поместите его в свой vbscript, а не в тот, который у вас есть.

Удачи!

person Jim    schedule 04.09.2012

Трудно игнорировать вашу подпрограмму ожидания, потому что, вероятно, причина кроется в ней. Кажется, вы используете фиксированное количество времени, в то время как вы должны использовать что-то вроде

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

также в случае возникновения проблем лучше разделяйте уровни объектов по одному в строке, чтобы их было легче отлаживать

With IE
  With .document
    With ...

и комментировать, пока не заработает

Это общие рекомендации. Если вы опубликуете реальный URL-адрес и подсказку ожидания, мы сможем дать более простой совет.

person peter    schedule 04.09.2012
comment
Это документ HTA, поэтому я не могу использовать Wscript.Sleep. - person Jim; 04.09.2012
comment
Это не работает с оператором .form1 with. - person Jim; 04.09.2012
comment
затем используйте window.setTimeout, какой URL вы загружаете? - person peter; 04.09.2012