Aktionen

AutoIt:Internet Explorer Auto-Login auf Webseite mit CheckBox

Aus znilwiki

Version vom 6. August 2017, 19:46 Uhr von BLinz (Diskussion | Beiträge) (Textersetzung - „<comments>“ durch „<comments />“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Problem

Ein Kunde hat eine Intranet-Webseite in der folgendes Formular eingebettet ist:

AutoIt-AutoLogin-Webseite-mit-CheckBox-001.png


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...