_ffxpath; nach form-button-click, gehts nicht mehr

  • Hallo,

    ich hab das Problem, das ich mit _ffxpath nicht mehr arbeiten kann, sobald ich ein formular abgeschickt habe.

    Also die erste Seite (wo auch das Formular ist) kann ich mit _ffxpath arbeiten.
    Sobald ich aber das formular mittels _ffclick abschicke und die zweite Seite erscheint, geht mit _ffxpath nix mehr.

    Es scheint als ob _ffxpath sich immer noch auf der ersten Seite befindet. D.h. _ffxpath findet HTML-Elemente, die nur auf der ersten Seite zu finden waren.


    Hier mal ein Beispiel Script:
    Es werden 2 Seite nach dem String 'Mein String' mittels xpath durchsucht.
    Sollte auf der ersten Seite der String nicht gefunden werden,
    so soll auf den Button geklickt werden.
    Danach sollte der String 'Mein String' gefunden werden. (tuts aber nicht :cursing: )

    Beispiel Script
    [autoit]


    ;--------------------------------------------------
    ; Include
    ;--------------------------------------------------
    #include <FF.au3>
    ;--------------------------------------------------

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

    ;--------------------------------------------------
    ; Variablen
    ;--------------------------------------------------
    $dateiname = "1.html"
    ;$dateiname = "2.html" ; Entferne am Anfang den Kommentar um zu sehen, dass xpath eigentlich funktioniert.
    ;--------------------------------------------------

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

    ;--------------------------------------------------
    ; Erzeugt zum testen 2 HTML-Dateien
    ;--------------------------------------------------
    $file = FileOpen("1.html", 2)
    If $file = -1 Then
    MsgBox(64, "Error", "Unable to open file.")
    Exit
    EndIf
    FileWrite($file, '<html><body><div id="text">Kein String</div><form action="2.html" method="post"><input type="submit" id="seite2" value="Zu Seite 2"></form></body></html>')
    FileClose($file)

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

    $file = FileOpen("2.html", 2)
    If $file = -1 Then
    MsgBox(64, "Error", "Unable to open file.")
    Exit
    EndIf
    FileWrite($file, '<html><body><div id="text">Mein String</div><form action="1.html" method="post"><input type="submit" id="seite1" value="Zu Seite 1"></form></body></html>')
    FileClose($file)
    ;--------------------------------------------------

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

    ;--------------------------------------------------
    ; Starte FF und lade die Seite
    ;--------------------------------------------------
    $file = FileGetShortName(@WorkingDir) & "\" & $dateiname
    _FFStart("file:///" & StringReplace($file, "\", "/", 0, 2))
    MsgBox(64, "Sleep()", "In 3 Sekunden gehts weiter.", 3)
    ;--------------------------------------------------

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

    ;--------------------------------------------------
    ; Im 1. Durchlauf wird 'Mein String' nicht gefunden,
    ; stattdessen klicke auf den Form-Button
    ; Im 2. Durchlauf sollte 'Mein String' gefunden werden.
    ;--------------------------------------------------
    $i = 1
    $abbruch = 0
    While 1
    $xpath = "//*[contains(.,'Mein String')]"
    If Int(_FFXPath($xpath, Default, 3)) Then ExitLoop
    $xpath = "//input[@id='seite2']"
    If Int(_FFXPath($xpath, Default, 3)) Then
    _FFClick(_FFXPath($xpath))
    MsgBox(64, "Schleifendurchlauf: " & $i, "Dieser If-Zweig sollte eigentlich nur einmal durchlaufen werden.")
    EndIf

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

    ;While Abbruch Code
    $i += 1
    If $i > 3 Then
    $abbruch = 1
    ExitLoop
    EndIf
    WEnd

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

    ;--------------------------------------------------
    ; Das Ergebnis
    ;--------------------------------------------------
    If Not $abbruch Then
    MsgBox(0, "OK", "Mein String wurde gefunden!")
    Else
    MsgBox(0, "ERROR", "Mein String wurde NICHT gefundnen!")
    EndIf
    ;--------------------------------------------------

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

    ;--------------------------------------------------
    ; Beende FF und Verlasse das Programm
    ;--------------------------------------------------
    _FFQuit()
    Exit
    ;--------------------------------------------------

    [/autoit]
    Konsolenausgabe

    Was kann ich tun, damits mit _ffxpath doch so läuft wie gedacht?

    Gruß
    CD

  • Hi,

    das mit dem

    [autoit]

    _FFDisconnect()
    _FFConnect()

    [/autoit]


    hatte ich schon probiert.
    Leider wird dabei, wenn man gerade in einem anderes Browserfenster surft, dieses Fenster connected.
    => kommt also nicht in Frage.

    Jedoch das mit dem

    [autoit]

    _FFCmd("FFau3.WCD=window.content.top.document;")

    [/autoit]


    kannte ich noch nicht.
    Habs gleich mal ausprobiert und es hat so funktioniert wie ich mir das vorgestellt hatte :love:

    Vielen Dank für den Tipp :thumbup:

    Gruß
    CD