AutoIt:Internet Explorer Auto-Login auf Webseite mit CheckBox
Aus znilwiki
Problem
Ein Kunde hat eine Intranet-Webseite in der folgendes Formular eingebettet ist:
Nun war es so das alle Benutzer sowieso sich an dieser immer mit dem gleichen Passwort und Benutzernamen anmelden - das Login nervte diese nur.
Mit AutoIt habe ich nun eine .exe gebaut bei der die Anmeldung direkt erfolgt.
Vorbereitung
Wir untersuchen den Quelltext der Webseite und suchen nach
- dem Formular das die Felder enthält
- dem Feld für den Benutzernamen
- dem Feld für das Passwort
- der CheckBox für die Bedingungen
Das geht in der Regel in allen Browsern per Rechtsklick und "Quelltext anzeigen" - Werkzeuge wie FrieBug etc. snd natürlich auch ok.
Für das obige Formular fand ich folgende Zeilen:
<div class="formular-container">
<div class="formular-content">
<form class="yform columnar" name="login" action="https://login.domain.suffix/register.aspx" method="post" onsubmit="return checkInput();">
<input type="hidden" name="baseUrl" value="http://login.domain.suffix/login_seite.html">
<input type="hidden" name="errorUrl" value="http://login.domain.suffix/login_error.html">
<fieldset>
<div class="type-text">
<label for="username">Benutzername <sup title="Pflichtfeld">*</sup></label>
<input name="username" value="Benutzername" size="20">
</div>
<br class="clearformrow" />
<div class="type-text">
<label for="name">Passwort <sup title="Pflichtfeld">*</sup></label>
<input name="passwort" type="password" size="20">
</div>
<br class="clearformrow" />
<div class="type-check">
<input type="checkbox" value=false" name="bedingung">
<label for="bedingung">Die Nutzungsbedingungen erkenne ich an. Den <a href="http://login.domain.suffix/Datenschutz_und_rechtliche_Hinweise.html">Datenschutzhinweis</a> habe ich zur Kenntnis genommen und akzeptiert.<sup title="Pflichtfeld">*</sup></label>
</div>
<br class="clearformrow" />
<div class="type-button">
<input type="submit" value="LOGIN" />
</div>
<fieldset>
</form>
Aus dem Quelltext ersehe ich die folgenden Werte:
- Das Formular heisst
login
(name="login") - Das Feld für den Benutzernamen heisst
username
(input name="username") - Das Feld für das Passwort heisst
passwort
(input name="passwort" type="password") - Die Checkbox heisst
bedingung
und ist nicht angehakt (input type="checkbox" value=false" name="bedingung")
Damit haben wir alles notwendige!
AutoIt-Quellcode
Folgendes AutoIt-Programm ist als Lösung dabei heraus gekommen:
; Auto-Login für Handelskammer-Webseite
;~ ; 12/2014 durch Bernhard Linz - DATAGROUP Bremen GmbH - 0421/202020 - Bernhard.Linz@datagroup.de
; Zusätzliche Befehle zur Steuerung des Internet Explorers einbinden
#include <ie.au3>
; AutoIt Symbol unten rechts bei der Uhr ausblenden
#NoTrayIcon
; Welcher Benutzername und welches Passwort soll zur Anmeldung genommen werden?
$s_Benutzername='Max.Mustermann'
$s_Passwort="passwort1234"
; Webseite öffnen auf der wir uns anmelden wollen
$oIE = _IECreate ("http://login.domain.suffix/login_seite.html")
; Nun warten wir bis die Webseite vollständig geladen ist:
_IELoadWait($oIE,0)
; Innerhalb dieser Webseite gibt es ein Formular - Wir holen uns einen Zeiger auf dieses Formular
$oForm = _IEFormGetObjByName ($oIE, "login")
; Im Formular gibt es Felder für Benutzername, Passwort und eine Checkbox das die Bedingungen angenommen werden
; Wir holen uns Zeiger auf alle diese Elemente
$oQueryUsername = _IEFormElementGetObjByName ($oForm, "username")
$oQueryPassword = _IEFormElementGetObjByName ($oForm, "passwort")
$oQueryBedingungen = _IEFormElementGetObjByName ($oForm, "bedingung")
; Wir haben Zeiger auf alles was wir brauchen - legen wir los!
; Benutzernamen in das vorgesehende Feld eintragen:
_IEFormElementSetValue ($oQueryUsername,$s_Benutzername)
; Passwort in das vorgesehende Feld eintragen;
_IEFormElementSetValue ($oQueryPassword,$s_Passwort)
; Den Haken bei der Checkbox für die Bedingungen setzen (steht noch auf "False")
$oQueryBedingungen.checked = True
; Wir haben alles ausgefüllt, nun senden wir das Formular (Beim Formular war method="post" im Quelltext gesetzt!)
_IEFormSubmit($oForm)
; Das war alles! Nach der Anmeldung wird die neue Seite geladen - das warten wir noch ab und beenden uns.
_IELoadWait($oIE,0)
;Beenden ohne Fehler!
Exit 0
Kommentare
Loading comments...