Mit VB-Script per ID- oder Name-Attribut auf ein HTML Element zugreifen

  • VBScript

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Berater90.

    Mit VB-Script per ID- oder Name-Attribut auf ein HTML Element zugreifen

    Hallo,

    ich habe folgendes Problem: Ich möchte mit VB-Script ein HTML-Formular mit Login-Daten füllen.
    Ich habe das auch schon erfolgreich umgesetzt. Nun habe ich aber ein Formular vorliegen, welches mir Kopfzerbrechen bereitet.

    Mein Problem liegt genau gesagt beim Ansprechen der "INPUT-Elemente". Bisher hatten alle Elemente, die ich mit VBS angesprochen habe ein "Name-Attribut". Über dieses Attribut habe ich das Element folgendermaßen angesprochen:

    HTML-Quellcode

    1. <input TYPE="TEXT" NAME="USER" style="width:128px;" size="20">
    2. <input TYPE="PASSWORD" NAME="PASSWORD" style="width:128px;" size="20">


    Visual Basic-Quellcode

    1. user = "MeinUser"
    2. password = "MeinPasswort"
    3. Set MeinIE = CreateObject("InternetExplorer.Application")
    4. With MeinIE
    5. .document.forms(0).user.Value = user
    6. .document.forms(0).password.Value = password
    7. .document.forms(0).submit.Click
    8. End With


    Nun habe ich Elemente, die im "Name-Attribut" Schrägstriche und Punkte enthalten. Das führt zu Problemen.

    HTML-Quellcode

    1. <input type="text" id="X5" name="var/user.id" dvdVar="" ButtonId="Text9" dataType=""
    2. scType="Text" style="width:225px; height:19px;" maxlength="" onkeydown="lockForm();void(0);"
    3. class="inputCaps" onkeyup="checkLastRow(this);" onfocus="handleOnFocus(this, event);"
    4. onchange="forceCase(this,'upper'); handleOnChange(this, event);" onclick="handleOnClick(this, event);"
    5. onblur="forceCase(this,'upper');" value="" scripttype="text">
    6. <input type="password" id="X7" name="var/old.password" dvdVar="" ButtonId="Text12" dataType=""
    7. scType="Text" style="width:225px; height:19px;" maxlength="" onkeydown="lockForm();
    8. void(0);" onkeyup="checkLastRow(this);" onfocus="handleOnFocus(this, event);"
    9. onchange="handleOnChange(this, event);" onclick="handleOnClick(this, event);" value="">


    Ich habe folgendes versucht. Leider ohne Erfolg.

    Visual Basic-Quellcode

    1. With MeinIE
    2. .document.forms(0).invokemember("var/user.id").Value = user
    3. .document.forms(0).invokemember("var/old.password").Value = password
    4. .document.forms(0).submit.Click
    5. End With
    6. With MeinIE
    7. .document.forms(0).getElementsById("X5").Value = user
    8. .document.forms(0).getElementsById("X7").Value = password
    9. .document.forms(0).submit.Click
    10. End With
    11. Folgendes habe ich probiert. Es widerspricht aber schon der VB-Syntax. Funktioniert natürlich auch nicht.
    12. With MeinIE
    13. .document.forms(0).var/user.id.Value = user
    14. .document.forms(0).var/old.password.Value = password
    15. .document.forms(0).submit.Click
    16. End With


    Weiß jemand, ob man das Element über die ID ansprechen kann oder ob man den Wert des "Name-Attributs" anders ausdrücken kann? So das es nicht mehr zu Syntaxfehlern kommt. Ich führe diesen VB-Code in Excel und als normales Script unter Windows XP aus.
    Ich habe nach nächtelangem probieren selbst eine Lösung gefunden. Ob es die beste Lösung ist, weiß ich nicht.

    Mit dem Element ".elements("")." konnte ich das Textfeld über das "Name-Attribut" ansprechen.

    Visual Basic-Quellcode

    1. With MeinIE
    2. .Document.forms(0).elements("var/user.id").Value = user
    3. .Document.forms(0).elements("var/old.password").Value = password
    4. .Document.forms(0).submit.Click
    5. End With