_IELinkClickByText Fehlerabfrage

  • Hallo miteinander,

    wenn ich einen Klick auf einer Webseite mit dem Befehl IELinkClickByTex ausführe möchte ich gerne wissen ob dies auch ausgeführt werden konnte.
    Angenommen den Link gibt es nicht auf der Seite dann möchte ich das abfangen. doch wie mache ich das?

    z.B. der Code hier, den Link gibt es nicht

    AutoIt
    #include <IE.au3>
    
    
    Local $oIE = _IE_Example("basic")
    _IELinkClickByText($oIE, "Link Existiert nicht")


    Wie Prüfe ich das?

    gruß Mücke

  • habe eine Lösung gefunden,
    direkt nach dem Befehl mache ich die Zeilen Code dazu.

    AutoIt
    if not @Error then Call ("hotkeyPressed")
    if @Error then MsgBox(0,"Fehler", Mist ein Fehler")
  • Anmerkungen zu deiner Lösung:

    1. Das Makro @Error bezieht sich immer auf die zuletzt ausgeführte Funktion, deine zweite @Error Abfrage bezieht sich also nicht mehr zwingend auf den Link klick, sondern könnte sich bei Erfolg des Link klicks auf die Funktion Call beziehen. Deine Fehlerabfrage ist in dieser Form also suboptimal. Dafür wurde der ELSE Zweig einer IF...THEN...ELSE Verzweigung erfunden.

    2. Wie dir schon im anderen Thread erklärt wurde ist die Funktion Call überflüssig wenn du die Funktion auch direkt aufrufen kannst. Diese Funktion macht bestenfalls Sinn um komplexe Funktionsaufrufe über ein Parameterarray Zeichenmässig zu verkürzen (siehe Beispiel in der Hilfe), ein anderer Anwendungszweck wäre z.B. eine Debugfunktion die dir als Anwender erlaubt jede beliebige Programmfunktion zur Laufzeit manuell aufzurufen.

    3. In der Hilfe wird normalerweise für jede Funktion erwähnt wie sie sich im Fehlerfall oder Erfolgsfall verhält. In deinem Fall liefert die Funktion nicht nur einen Fehlercode, sondern auch einen Returnwert. Grundsätzlich würde ich hier daher auf den Returnwert prüfen um zu sehen ob es sich um einen Erfolg oder Fehler handelt und im Fehlerfall würde ich den Error Code nutzen um herauszufinden was genau das Problem war. In der Hilfe zur genannten Funktion sind immerhin 8 verschiedene Fehlerfälle dokumentiert. Ob du die dann noch detailiert abhandeln möchtest oder einfach nur den Fehlercode für Debugmeldungen verwendest bleibt dir überlassen. Im Beispiel unten wird der Fehlercode lediglich erwähnt und kann dann von dir in der Hilfe nachgeschlagen werden.

    AutoIt
    #include <IE.au3>
    
    
    Local $oIE = _IE_Example("basic")
    If _IELinkClickByText($oIE, "Link Existiert nicht") = 0 Then
       MsgBox(0,"Fehler", "_IELinkClickByText() war nicht erfolgreich. Fehlercode: " & @Error)
    Else
       hotkeyPressed()
    EndIf

    2 Mal editiert, zuletzt von misterspeed (8. Dezember 2016 um 18:14)