1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Kleffer

Beiträge von Kleffer

  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 20:52

    Abschließend möchte ich noch ergänzen, dass $oIE = _IEAttach("Seitentitel") am Ende doch nicht mehr nötig ist.
    Beim nächsten Schritt Formular absenden und Antwort lesen hatte ich erst die gleichen Probleme. Als ich das Skript dann aber mit einer unsichtbaren Session ausführte, war alles ok. Auch nachdem ich _IEAttach komplett aus dem Skript entfernt habe, läuft alles einwandfrei. Ich verstehe den Grund zwar nicht, aber das Problem trat nur mit einem sichtbaren Browser auf. Zum Glück brauche ich das aber nicht.

    Danke nochmal für die Hilfe.

  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 19:20

    Ich habe einen Weg gefunden. $oIE = _IEAttach("Seitentitel") löst das Problem nach einem kurzen Sleep auf der neuen Seite, wird das Eingabefeld gefunden und ich kann so wie du es beschrieben hast, den Feldwert setzen. :)

  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 18:35

    Ich glaube, ich bin einen Schritt weiter. Ich wollte mal sehen, welche Elemente denn überhaupt auf der Seite gefunden werden und habe dafür Code in der Hilfe zu _IETagNameAllGetCollection gefunden.

    Das ist das Skript:

    Code
    #include <IE.au3>
    
    $sBenutzer = "Benutzer"
    $sPasswort = "Passwort"
    $sEingabetext = "Test@test.de"
    
     
    $oIE = _IECreate ("http://news.ABC.de/custom/api/ABC/XX/index.jsp")
    _IELoadWait($oIE)
    
    
    
    $oForm = _IEFormGetCollection($oIE, 0)
    
    $oLogin = _IEFormElementGetObjByName ($oForm, "u")
    _IEFormElementSetValue ($oLogin, $sBenutzer)
    $oLogin = _IEGetObjById($oIE, "p")
    _IEFormElementSetValue ($oLogin, $sPasswort)
    _IEFormSubmit($oForm)
    _IELoadWait($oIE)
    Sleep(2000)
    
    Local $oElements = _IETagNameAllGetCollection($oIE)
    For $oElement In $oElements
        If $oElement.id Then ConsoleWrite("Tagname: " & $oElement.tagname & @CRLF & "id: " & $oElement.id & @CRLF & "innerText: " & $oElement.innerText & @CRLF)
    Next
    
    $oInput = _IEGetObjById($oIE, "e")
    ;~ $oInput = _IEGetObjByName($oIE, "e")
    If @error Then Exit MsgBox(0,@ScriptLineNumber, @error)
    _IEFormElementSetValue($oInput, "blablubb")
    If @error Then Exit MsgBox(0,@ScriptLineNumber, @error)
    Alles anzeigen

    Das ist die Ausgabe:

    Spoiler anzeigen

    Tagname: INPUT

    id: u

    innerText:

    Tagname: INPUT

    id: p

    innerText:

    Das sind noch die Elemente von der ersten Seite - nach der Pause und die neue Seite ist schon längst sichtbar. Ich denke es läuft ungefähr darauf hinaus, was du gleich am Anfang gesagt hast alpines.

    Zitat von alpines

    Dein Code kann so nicht funktionieren, da die Form nicht erneuerst wenn du die Seite gewechselt hast, also wird der Teil mit ; ### AB hier funktioniert es nicht. sowieso nicht laufen können.

    Wie kann ich das aktualisieren? In meinem ersten Versuch hatte ich beim Wechsel auf die neue Seite erneut $oForm = _IEFormGetCollection($oIE, 0) benutzt, aber das hatte nicht funktioniert (scheint jetzt auch klar, wenn $oIE veraltet ist) Wie aktualisiere ich das $oIE Objekt?

  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 16:07

    Nein, die neue Seite öffnet sich im gleichen Fenster und gleichem Tab. Auch die URL ändert sich nicht.

  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 16:02

    Ich musste erst mal nach iframe schauen. Nein, ich kann davon nichts sehen.
    Ja, der Code wird sehr schnell ausgeführt. Ich habe nach dem Absenden der Login Daten mal ein Sleep von 2 Sekunden eingefügt. Dann ist die Seite längst geladen, aber es funktioniert noch nicht.

    Das ist die komplette Seite:

    Spoiler anzeigen
    HTML
    <html lang="en">
    <head>
        <meta name="robots" content="noindex">
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="shortcut icon" href="assets/favicon/favicon.ico" type="image/icon">
        <link rel="stylesheet" type="text/css" href="assets/css/default.css">
        <title>Titel</title>
        <meta http-equiv="content-language" content="de">
    </head>
    <body>
        <div class="center">
            <form method="post" action="" class="form">
            <input type="hidden" name="a" value="XX">
            <input type="hidden" name="h" value="YY">
            <p>
                <label for="e">Text</label>
                <input type="text" id="e" name="e" value="" placeholder="Beispieltext" required>
            </p>
            <p>
                <input type="submit" class="button" value="Absenden">
            </p>
        </form>
    </div>
    </body>
    </html>
    Alles anzeigen
  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 15:24

    Leider funktioniert das nicht.

    Ich habe es nun mit folgendem Code probiert. Bei beiden Varianten (_IEGetObjByName/_IEGetObjByID) erhalte ich danach die Fehlermeldung 7 (No Match). Dabei sind ja im Quelltext sowohl id als auch Name "e". <input type="text" id="e" name="e" value="" placeholder="Beispieltext" required>

    Code
    $oIE = _IECreate ("http://news.ABC.de/custom/api/ABC/XX/index.jsp")
    _IELoadWait($oIE)
    
    $oForm = _IEFormGetCollection($oIE, 0)
    
    $oBenutzerfeld = _IEFormElementGetObjByName ($oForm, "u")
    _IEFormElementSetValue ($oBenutzerfeld, $sBenutzer)
    $oPasswortfeld = _IEFormElementGetObjByName ($oForm, "p")
    _IEFormElementSetValue ($oPasswortfeld, $sPasswort)
    _IEFormSubmit($oForm)
    _IELoadWait($oIE)
    
    ; ### Ab hier funktionert es nicht.
    ;~ $oInput = _IEGetObjByName($oIE, "e")
    $oInput = _IEGetObjById($oIE, "e")
    If @error Then Exit MsgBox(0,@ScriptLineNumber, @error)
    _IEFormElementSetValue($oInput, "blablubb")
    If @error Then Exit MsgBox(0,@ScriptLineNumber, @error)
    Alles anzeigen

    Eben habe ich _IEGetObjById/_IEGetObjByName ausprobiert bei den Login Feldern ausprobiert. Dort funktioniert auch das. Nur auf der zweiten Seite funktioniert nichts.

  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 14:50

    Hallo alpines,

    vielen Dank für deine Antwort. Hattest du den Code im Spoiler gesehen? Das ist der Body Bereich von der Seite, auf die ich nach dem Login komme. Brauchst du da auch den Head Bereich oder die erste Seite?

    Zitat von alpines

    Der Weg führt nicht nach Rom.

    Das kann ich bestätigen. $oForm = _IEGetObjByName($oIE, "form") war falsch. Ich sehe aber auch keinen Namen.

  • Wie nach einem Login mit _IE-Funktionen mit der Steuerung fortfahren?

    • Kleffer
    • 9. August 2019 um 13:34

    Hallo,
    ich versuche zum ersten Mal eine Website aufzurufen und automatisiert Felder auszufüllen. Aber ich bekomme es nicht hin. Ich rate da wild herum, weil ich auch keine Ahnung von html habe.

    Es handelt sich um eine ganz einfache firmeninterne Website. Unter der URL finde ich nur Benutzer und Passwort Felder. Das Ausfüllen und Absenden klappt noch. Die URL ändert sich nicht, aber ich komme natürlich auf eine neue Seite, mit einem Formular mit nur einem Inputfeld und einem Absenden Button.

    Allerdings kann ich dann nicht mehr erfolgreich auf das Feld zugreifen. Der Fehlerwert von _IEFormElementGetObjByName ist immer 7 (No Match).

    Spoiler anzeigen

    <body>

    <div class="center">

    <form method="post" action="" class="form">

    <input type="hidden" name="a" value="XX">

    <input type="hidden" name="h" value="YY">

    <p>

    <label for="e">Text</label>

    <input type="text" id="e" name="e" value="" placeholder="Beispieltext" required>

    </p>

    <p>

    <input type="submit" class="button" value="Absenden">

    </p>

    </form>

    </div>

    </body>

    Code
    #include <IE.au3>
    
    $sBenutzer = "Benutzer"
    $sPasswort = "Passwort"
    $sEingabetext = "Testtext"
    
    
    $oIE = _IECreate ("http://news.ABC.de/custom/api/ABC/XX/index.jsp")
    _IELoadWait($oIE)
    
    $oForm = _IEFormGetCollection($oIE, 0)
    
    $oBenutzerfeld = _IEFormElementGetObjByName ($oForm, "u")
    _IEFormElementSetValue ($oBenutzerfeld, $sBenutzer)
    $oPasswortfeld = _IEFormElementGetObjByName ($oForm, "p")
    _IEFormElementSetValue ($oPasswortfeld, $sPasswort)
    _IEFormSubmit($oForm)
    _IELoadWait($oIE)
    ;~ $oForm = _IEFormGetCollection($oIE, 0)
    
    ; ### Ab hier funktionert es nicht.
    
    $oEingabefeld = _IEFormElementGetObjByName ($oForm, "e")
    If @error Then Exit MsgBox(0,@ScriptLineNumber, @error)
    _IEFormElementSetValue ($oEingabefeld, $sEingabetext)
    Alles anzeigen

    Ich hoffe jemand sieht hier schnell, was ich falsch mache und kann mir helfen.

    Gibt es darüber hinaus ein Tutorial oder wie sollte ich mich sinnvoll in das Thema einarbeiten?

  • Schlagwortsuche in Textdateien

    • Kleffer
    • 3. Dezember 2016 um 21:40

    Leider kann ich damit keine log Dateien lesen. Warum klappt das nicht, obwohl das doch auch nur Zextdateien sind?

    Grüße Kleffer

  • Frage zu Child Windows bzw. Owned Windows

    • Kleffer
    • 19. November 2016 um 12:00

    Hallo :)

    In der Hilfe bin ich über Parent bzw. Child Windows und über Owner bzw. owned Windows gestolpert.
    Etwa in der Beschreibung zu _GUITooltip_Create finden sich beide Bezeichnungen. Ich verstehe den Unterschied hier nicht.
    Parent / Child kenne ich als nützlichen Parameter von GUICreate.
    Wo ist bei einem Tooltip der Unterschied zwischen Parent und dem Fenster zu dem dem das Control gehört?

    Viele Grüße aus der Hundehütte.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™