He hecho esto un par de veces, sin embargo no estoy seguro de por qué esta vez mi HTA vbscript es gritar a mí sobre el Objeto no admite esta propiedad o método de IE.Documento.form1?

Ignorar la Espera de 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

Tengo esta función en mi HTA vbscript así, y funciona bien.

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

Encontró que el form1 es en un iframe, podría ser por eso que no se puede hacer referencia a ella. Alguna idea?

<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>
  • Ok podría estar en algo. Parece que la página que estoy tratando de chatarra utiliza iframes. El form1 es en un iframe llamado ct100_ContentPlaceHolder1_T1. Ver edición anterior.
InformationsquelleAutor Jim | 2012-09-04

2 Comentarios

  1. 1

    Ok, así que imaginé. El iframe estaba causando todos los problemas. Para aquellos con el mismo mensaje de error, pruebe a comprobar la forma y los elementos no son parte de un iframe en el Sitio que usted está tratando de raspar. Trabajo backwords en el sitio agarrar el iframe de la fuente y poner eso en su vbscript en lugar de la que tiene.

    Mejor Suerte!

  2. 0

    Es difícil ignorar su espera sub porque, probablemente, no se encuentra la causa. Parece que el uso de una cantidad fija de tiempo, mientras que uou debe usar algo como

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

    también en caso de problemas, mejor separar sus niveles de objeto, uno por línea, más fácil de depurar

    With IE
      With .document
        With ...

    y comentar hasta que funcione

    Estos oare directrices generales, si usted publicar la URL real y a la espera de los sub podríamos dar más sencillo aconsejar.

    • Esta es una HTA documento, por lo que no puede hacer Wscript.El sueño.
    • Es fallar en el .form1 con la declaración.
    • a continuación, utilice la ventana.setTimeout, ¿cuál es la dirección url de carga ?

Dejar respuesta

Please enter your comment!
Please enter your name here