Sleep Funktion ersetzen

  • Guten Tag,
    Ich beschäftige mich heute zum ersten mal mit Autoit und habe eine Aufgabe bekommen.
    Das ganze funktioniert, doch das einzige Problem sind die Sleeps. Die sind dazu da, dass die Seite die Zeit hat komplett zu laden, damit die Befehle die darauf folgen auch eingesetzt werden können.
    Es soll richtig definiert sein, da die Sleeps zurzeit nur Schätzungsweise angegeben sind.
    Sie können auch weggelassen werden, das Skript soll nur warten bis die Webseite vollständig geladen hat.

    Wäre Dankbar, wenn einer helfen kann.

    2 Mal editiert, zuletzt von autoit93 (25. Juli 2013 um 10:00)

  • Hallo,

    Also ich dachte

    [autoit]

    _IELoadWait($oIE,1)

    [/autoit]


    wartet darauf, dass die Seite geladen hat:

    Zitat von Hilfe

    Pausiert das Skript bis eine Seite im Browser fertig geladen wurde.

    Auch übrigens:

    Sleep(1000) ;3s warten

    :rofl: :rofl::rofl:

    MfG Xenon

  • Wenn ich das Sleep weglasse, trägt er den Usernamen usw. nicht ein.
    Was muss ich jetzt machen?

    Es handelt sich bei der Anmeldung um java. Hängt das vielleicht davon ab?

    Einmal editiert, zuletzt von autoit93 (2. Juli 2013 um 08:17)

  • Wenn ich das Sleep weglasse, trägt er den Usernamen usw. nicht ein.
    Was muss ich jetzt machen?

    Es handelt sich bei der Anmeldung um java. Hängt das vielleicht davon ab?

    Java ist manchmal ein wenig lästig ;)

    Schau mal bitte in deine Private Nachrichten ;)

    Ich bin weder Neuling noch Profi

  • Das es Intern ist war mir fast klar.

    Verfolge mal dein Script bis zum Markieren des Benutzernamens.
    ohne Send befehle, wenn das schon nicht geht, dann gibt es noch
    die Variante send ...{TAB}...'s nutzen (umständlich) oder Mausposition klick.

    Wenn ich da etwas falsches sage möge man mich verbessern ;)
    Ansonsten fällt mir jetzt im Augenblick nicht's ein woran es noch liegen
    kann. bzw. wie man es lösen könnte.

    Ich bin weder Neuling noch Profi

  • ich habe grad nicht wirklich verstanden was ich machen soll


    Nehm mal diese Passage raus

    [autoit]


    Send("Username{TAB}")
    Send("Passwort")
    Send("{ENTER}")

    [/autoit][autoit][/autoit][autoit]

    Sleep(30000)
    _IELoadWait($oIE)
    $WGTLogLine=$WGTLogLine & ";" & Round(TimerDiff($timeBegin))

    [/autoit]

    und schaue nach ob das Usernamen Feld überhaupt vom Textcursor erfasst wird.

    Wenn ja sollte das senden Funktionieren,

    wenn nicht rufe die Seite mal auf und drücke mal die Tab-Taste bis das Textfeld Ausgewählt ist. (Tab's mitzählen). - Wäre die umständliche Variante um zu sehen wieviele Tab's du als send befehl in dein Script einfügen müsstest.

    Zweite Variante bin ich gerade am Lesen einen Augenblick ;)

    Ich bin weder Neuling noch Profi

  • Das Usernamen Feld wird vom Textcursor erfasst !
    die Eintragung geht auch also das Send.
    Nur möchte ich das nicht mit einem Sleep machen.
    Es soll erkennen wann die Seite vollständig geladen hat und dann einfüllen.

    Und das ist das Problem es ignoriert das _IELoadWait Befehl.

  • Zitat

    In diesen Fällen sollte man auf _IELoadWait() verzichten [...] und stattdessen auf alternative Methoden ausweichen, [...] Dies kann z.B. durch Sleep(), Auslesen der Browser-Status-Bar oder anderen Methoden erreicht werden.[...] Die häufigsten Fehlerquellen sind automatische Weiterleitungen und Sicherheitseinstellungen, die Cross-Site-Scripting verhindern, in Verbindung mit Frames. Automatische Seitenaktualisierungstechniken einiger Anwendungen (z.B. Googlemail) können ebenfalls Probleme verursachen.


    In dem Fall geht es auf der Seite nicht und du musst dir was anderes überlegen ;)

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)


  • Kann ich nicht so etwas in mein Skript bauen/umsetzen`? Habe ich von einem anderen Thread hier.
    Aber da ich noch neu in Autoit bin, schaffe ich das nicht allein.

  • Da fehlt aber ein ganzes Stück :D Wo isn der Rest?
    Link vom Thread?

    Da gehts um Objekte

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Zur Vervollständigung hier noch die Lösung die ich mit autoit93 erarbeitet hab.

    [autoit]

    ;--- Anmeldeseite starten
    Local $oIE = _IECreate("https://*****************html", 0, 1, 1, 1) ; sofort die richtige seite laden
    $WGTLogLine = $WGTLogLine & ";" & Round(TimerDiff($timeBegin))
    Local $o_form = _IEFormGetObjByName($oIE, "vpnForm")
    Local $o_login = _IEFormElementGetObjByName($o_form, "login")
    _IEFormElementSetValue($o_login, "blabla")
    ; local $o_password = _IEFormElementGetObjByName ($o_form, "password") ; funktioniert leider nicht. Das Obj heißt nicht password. Hab auf die schnelle nicht rausgefunden wie es heißt weil es in einem Javascript erzeugt wird
    Local $o_password = _IEFormElementGetCollection($o_form, 1) ; da ObjByName nicht funktioniert nehm ich das Obj 1 in der Form Collection (Obj 0 ist login, Obj 1 ist password, Obj 2 ist der Absenden Button)
    _IEFormElementSetValue($o_password, "blabla2")
    _IEFormSubmit($o_form)

    [/autoit]
  • Will deinen Erfolg nicht schmälern Schnitzel, aber praktisch das gleiche hab ich ihm heute morgen schon gesagt nur er ist schlicht zu faul es zu verstehen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.