IE Message Fenster beantworten

  • Moin Moin

    ich arbeite gerade an einem kleinen script welches mir bei WKW meine alten einträge löscht.
    Also den lösch button und anmelden klappt super. nur nach dem betätigen des Buttons kommt eine MessageBox ob man wirklich lsöchen möchte.
    Diese kann ich leider nicht ansprechen. habs schon mehrfach mit Control send und Send probiert, leider keine abhilfe

    Wundert euch nicht über die libs oder sonstige zusatz sachen, gehört zu nem anderen projekt

    Anbei mal das Script

    [autoit]

    #include <ButtonConstants.au3>#include <EditConstants.au3>#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>#include <Date.au3>#include <IE.au3>
    Global $ntpServer = '0.de.pool.ntp.org' ; NTP-Server zum synchronisieren der Uhrzeit über das InternetDim $i = 0Dim $wartezeit = 2

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

    $oIE = _IECreate("http://www.wer-kennt-wen.de");Prüfen ob ein Objekt erzeugt wurde
    ;warten bis die Seite komplett geladen wurde_IELoadWait($oIE);Erzeugen eines HTML-Formular-Objekts mit Hilfe des Formularnamens$oForm = _IEFormGetObjByName($oIE, "loginform");Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames$oUsername = _IEFormElementGetObjByName($oForm, "loginName");Setzen des Formularfeldinhalts_IEFormElementSetValue($oUsername, "Hier Username eintragen");Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames$oPasswd = _IEFormElementGetObjByName($oForm, "password");Setzen des Formularfeldinhalts_IEFormElementSetValue($oPasswd, "Hier PAsswort eintragen");Absenden des Formulars_IEFormSubmit($oForm)
    ;warten bis die Seite komplett geladen wurde_IELoadWait($oIE);alte einträge löschen_IEImgClick($oIE, "Eintrag löschen", "alt")

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

    If WinExists("Microsoft Internet Explorer", "") Then WinActivate("Microsoft Internet Explorer", "") Send("{TAB}{ENTER}")Endif

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


    anbei das bild von der Message Box(habs auch schon über die Titel probiert aber leider nix)

  • irgendwie zerhaut mir hier die website bzw. mein browser den code


    Spoiler anzeigen

    2
    3
    4
    5
    6
    7
    8
    9
    10

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <IE.au3>


    Global $ntpServer = '0.de.pool.ntp.org' ; NTP-Server zum synchronisieren der Uhrzeit über das Internet
    Dim $i = 0
    Dim $wartezeit = 2

    $oIE = _IECreate("http://www.wer-kennt-wen.de")
    ;Prüfen ob ein Objekt erzeugt wurde

    ;warten bis die Seite komplett geladen wurde
    _IELoadWait($oIE)
    ;Erzeugen eines HTML-Formular-Objekts mit Hilfe des Formularnamens
    $oForm = _IEFormGetObjByName($oIE, "loginform")
    ;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
    $oUsername = _IEFormElementGetObjByName($oForm, "loginName")
    ;Setzen des Formularfeldinhalts
    _IEFormElementSetValue($oUsername, "Username hier eintragen")
    ;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
    $oPasswd = _IEFormElementGetObjByName($oForm, "password")
    ;Setzen des Formularfeldinhalts
    _IEFormElementSetValue($oPasswd, "Passwort hier eintragen")
    ;Absenden des Formulars
    _IEFormSubmit($oForm)

    ;warten bis die Seite komplett geladen wurde
    _IELoadWait($oIE)
    ;alte einträge löschen
    _IEImgClick($oIE, "Eintrag löschen", "alt")


    ;hier soll das Poup mit der Meldung geschlossen werden
    If WinExists("Microsoft Internet Explorer", "") Then
    WinActivate("Microsoft Internet Explorer", "")
    Send("{TAB}{ENTER}")
    Endif

    2 Mal editiert, zuletzt von cobain86 (14. März 2011 um 13:39)

  • Hallo cobain86,

    du solltest Autoit-Anfänger Guide / Wie poste ich richtig? lesen, denn dass man einen Beitrag editieren kann und man für AutoIt-Code die AutoIt-Tag's setzt (bei längeren Skripten auch noch im Spoiler) solltest du doch nach fast einem Jahr hier wissen.

    Ich weiss dass PopUp's im embedded IE Probleme machen, im normalen sollte ein _IEAttach auf das PopUp-Fenster und danach _IEAction mit dem Parameter "quit" funktionieren,

    mfg autoBert

  • Einfach mit ControlClick() auf den "OK"-Button klicken.
    Mit dem AutoIt Window Info Tool bekommst du die nötigen Daten zusammen. Einfach Strg+F6 in SciTE ;)

    das hab ich ja auch schon probiert
    leider kein erfogl

    [autoit]

    ControlClick("Meldung von Webseite", "", "[CLASS:Button; TEXT:OK; Instance:1;]")

    [/autoit]
  • habs heute auch mal mit "SEND" probiert
    auch keine abhilfe
    der Send wir erst nachdem ich die Messagebox per maus betätigt habe durchgeführt.
    sprich solange die box offen ist läuft das autoIT script nicht :(

  • Hallo cobain86,

    um ein evtl. Missverständnis auszuschliessen mach bitte ein ScreenShot und poste auch die dazugehörigen Infos aus dem AU3-InfoTool,

    danke autoBert

  • Hallo cobain86,

    ich hatte es befürchtet tatsächlich ein Missverständnis. Wenn diese Meldungsbox tatsächlich dein Skript blockiert bleibt dir nichts anderes übrig als mit

    [autoit]

    AdlibRegister

    [/autoit]

    eine func zu registrieren die regelmässig nachschaut ob ein solches Fenster existiert und es dann schliesst.

    mfg autoBert

  • Hallo cobain86,

    ich hatte es befürchtet tatsächlich ein Missverständnis. Wenn diese Meldungsbox tatsächlich dein Skript blockiert bleibt dir nichts anderes übrig als mit

    [autoit]

    AdlibRegister

    [/autoit]

    eine func zu registrieren die regelmässig nachschaut ob ein solches Fenster existiert und es dann schliesst.

    mfg autoBert

    hmm habs jetz mal so probiert
    leider auch keine abhilfe
    es kommt kein SEND zu stande

    Spoiler anzeigen

    AdlibRegister("_MsgCheck", 350)

    Func _MsgCheck()
    ;... die Ausführung darf nicht blockiert werden. Die Verwendung der ...Wait(), MsgBox(), InputBox() Funktionen ist daher zu vermeiden.
    If WinActive("Meldung von Webseite") Then
    Send("{ENTER}")
    EndIf
    EndFunc

  • hmm leider keine abhilfe.
    aber ich habe gemerkt das der Button einen dymanischen link hat(also das Icon welches ich mit _IEImgClick($oIE, "Eintrag löschen", "alt") auslese)

    wenn ich diesen Dynamischen link nun direkt im Browser anwähle macht er gleich richtig weiter ohne erst die Dialog Box zubringen.
    Gibt es nun eine möglichkeit diesen Dynamischen link der auf dem Icon liegt zu aktivieren

    anbei mal der html code

    <a class="deleteJN" href="/justnow/del/ogkk6dok/entry/v67ul4qwpx/return/start/" title="Eintrag löschen">

  • [autoit]

    Local $sHTML, $aArray

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

    ;$sHTML = _IEBodyReadHTML($oIE)
    $sHTML = '<a class="deleteJN" href="/justnow/del/ogkk6dok/entry/v67ul4qwpx/return/start/" title="Eintrag löschen"> '
    $aArray = StringRegExp($sHTML,'"deleteJN" href="([^"]+)',1)

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

    If Not IsArray($aArray) Then Exit MsgBox(16,"","StringRegExp fehlgeschlagen")
    MsgBox(0,"",$aArray[0])

    [/autoit]
  • oh da war jemand schneller
    naja habs jetzt so gelöst

    [autoit]

    $file="temp.txt"
    $url = "http://www.wer-kennt-wen.de"
    $Stringleft = '<A class=deleteJN title="Eintrag löschen" href="'
    $Stringright = '"'

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

    $HTML = _IEBodyReadHTML ($oIE)
    FileWrite($file,$HTML)
    $source= FileRead("temp.txt")
    $string=_StringBetween($source,$Stringleft,$Stringright)

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

    $link = $url & $string[0]
    ;MsgBox(0,"", $link)

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

    _IENavigate ($oIE, $link)

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

    FileDelete($file)

    [/autoit]

    hier fehlt nur noch eine if abfrage ob der Text $string auch in der TXT file ist, und wenn icht dann eben den punkt überspringen.
    weiß jemand den command um das zu prüfen?

    Einmal editiert, zuletzt von cobain86 (15. März 2011 um 22:48)

  • oh da war jemand schneller
    naja habs jetzt so gelöst


    Wär ja nicht so, dass wir schon vorher in der Shoutbox geschrieben hätten, und ich dir gesagt habe, du sollst mal in deinen Thread gucken...

    hier fehlt nur noch eine if abfrage ob der Text $string auch in der TXT file ist, und wenn icht dann eben den punkt überspringen.
    weiß jemand den command um das zu prüfen?

    Wofür schreibst du das überhaupt in eine Datei? Du hast es doch schon in der Variablen.

    [autoit]

    If $sString <> "" Then ...

    [/autoit]