FF-Management - FireFox.au3

  • Tssssss ich weis auch nicht, es ist irgendwie zum Mäuse melken.
    Die ganze zeit geht´s nicht und gibt immer Null zurück.


    Und nun geht´s ohne Änderung gibt aber noch Null zurück was ich gleich mit der neuen FF.au3 beseitige.



    Aber egal, THX dafür, die Freude ist groß ... :D


    Das mit _FFSend: document.getElementById('statusbar-icon').value ist
    interessant. Ich fragte mich schon die ganze Zeit, wofür man wohl das
    statusbar-icon abfragt ...


    Mal ne andere Frage, was ist daran wohl falsch, ich bekommen immer ein syntax error

    $sIndex = '= 2'
    'content.document.direction.Auswahl.selectedIndex' & $sIndex & '"'



    Jo, jetzt klappt´s wirklich mit den kleinen Bildchen und nun weiß ich auch warum nur ab und zu.
    Ich habe in meinem Neuen Profil so gut wie alle Erweiterungen installiert
    so auch No Script und was soll ich sagen, hatte den Peter nur Temporär freigegeben...


    Ein anderes Problem habe ich noch mit den Bildern, es sind ja wohl nur Div Container, welche dann mit JavaScript aufgehen.
    Wenn ich in die Warteschlange komme, geht auch so´n Ding auf, aber wie könnte ich darauf reagieren (abfragen).
    Wenn es ein HTML Fenster wäre, könnte ich ja nach inneren Text suchen lassen, das geht aber hier nicht ???

    Einmal editiert, zuletzt von thunder-man ()

  • Weis zwar nicht genau was du da machst, aber das Anführungszeichen hinter der Zahl gehört da nicht hin:


    $sIndex = '= 2'
    'content.document.direction.Auswahl.selectedIndex' & $sIndex



    Vermutlich das Dings hier:

    PHP
    <div id="msgStatus">
    <div class="ani"><img src="images/common/home/status_ani.gif" alt="Status-Animation" /></div>
    <div class="content">
    <h3>Einen Augenblick bitte, <br />wir verbinden Sie...</h3><p>PeterZahlt verbindet Sie jetzt kostenlos <br />mit Ihrem gew&uuml;nschten Gespr&auml;chspartner.<br /></p><p><strong>Bitte warten Sie, bis Ihr Telefon klingelt</strong>.</p>
    </div>
    </div>


    Was willst du denn machen wenn du in die Warteschlange kommst?
    Da dieses "Fenster" dann ja ganz "vorne" ist könnte man sich über eine Abfrage des entsprechenden Layers was basteln.


    Grüße
    Thorsten

  • Das 1. ist immer noch mein Versuch ein Option Listenfeld auf eine anderen HP
    zu öffnen.


    ========
    Ja, das 2. ist der Div Container vom Peter, diesen muss man abwarten und danach kommt ein weiterer Container mit nem Image jetzt Telefonieren, wo man dann innerhalb von einer Minute drauf drücken muss.


    Beim IE habe ich das auch nicht abfragen können... Und hier, oder im nLite Forum gab´leider auch keine Antwort.

    Func _Exlporer()
    $oIE = _IECreate('http://www.peterzahlt.de')
    If @error Then Exit
    _IELoadWait($oIE)


    $o_form = _IEGetObjById($oIE, "aAge")
    If _IEFormElementGetValue($o_form) = "?" Then
    _IEImgClick($oIE, "images/common/home/icon_inputRefresh.gif", "src")
    _IEFormElementSetValue($o_form, $Age)
    $o_form = _IEFormGetObjByName($oIE, "frmCall")
    Sleep(1000)
    _IEFormElementRadioSelect($o_form, $gender, "aGender", 1, "byValue")
    Sleep(100)
    _IEImgClick($oIE, "images/de/home/btn_submit.gif", "src")


    $o_form = _IEGetObjById($oIE, "txtPhoneA")
    _IEFormElementSetValue($o_form, $aNumber)
    $o_form = _IEGetObjById($oIE, "txtPhoneB")
    _IEFormElementSetValue($o_form, $bNumber)
    Sleep(100)
    _IEFormImageClick($oIE, "images/de/home/btn_callForFree.gif", "src")
    Else
    $o_form = _IEGetObjById($oIE, "txtPhoneA")
    _IEFormElementSetValue($o_form, $aNumber)
    $o_form = _IEGetObjById($oIE, "txtPhoneB")
    _IEFormElementSetValue($o_form, $bNumber)
    Sleep(100)
    _IEFormImageClick($oIE, "images/de/home/btn_callForFree.gif", "src")
    EndIf
    EndFunc ;==>_Exlporer



    Edit:
    Aber wie erfahre ich was von dem Layer?
    Ich weiß wohl, das ich den auch mit CSS sichtbar machen kann, was aber ja
    da nich´s mit zu tun hat.


    so long
    Frank

    Einmal editiert, zuletzt von thunder-man ()

  • Aus Mangel an Funktionen für Forms habe ich mal den universal Befehl _FFSetGet genommen:



    Sieht nicht ganz so wüst aus wie mit dem Explorer.


    Für die weitere Abfrage muß ich erst noch schauen wie die Seite funktioniert.


    Viele Grüße
    Thorsten

  • Hi, danke erst einmal für Deine Mühe.
    Das mit der Altersangabe klappt wohl nicht, jedenfalls geht das Fenster bei mir nicht auf.

    If _FFGetValueById($Socket,"aAge") = "?" Then


    Wenn ich nur das Alter Abfrage, bleibt die MsgBox auch leer
    $Value_ = _FFGetValueById($Socket, "aAge")
    MsgBox(0, "", $Value_)


    Vielleicht ist es aber auch dieses hier..., da wo ich Hallo hingeschrieben habe steht sonst das ?

    PHP
    <span
    id="aAgeDisplay">&nbsp;&nbsp;&nbsp;&nbsp;Hallo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>



    $Value_ = _FFGetValueById($Socket, "aAgeDisplay")
    Dann gibt´s vielleicht auch Probleme wegen den onclick.
    Oder funktioniert _FFGetValueById mit onklick?

  • Mit der Beta 3 poppt alles auf, auch die Länderauswahl.
    Ich muss mal noch was testen, weil da nachdem das Alter und Geschlecht
    eingetragen wurde noch ein Image klick zur Übernahme hin muss.


    _FFClickImage($Socket,"btn_submit.gif", "src")


    Hintergrund:
    Nachdem man dann einmal auf der Seite war und das Alter und Geschlecht
    angegeben hat bekommt man ein Cookie...


    greeting
    Frank



    Edit: Ausgabe der Console:

    Einmal editiert, zuletzt von thunder-man ()

  • Ich habe extra mal die Zahlen geändert um alles besser kontrollieren zu können.


    Die IF Anweisung wird ignoriert und zuerst die Nummern 404040 und 505050
    eingetragen.
    Dann öffnet kurz das Fenster für Alter und sofort komischerweise das Fenster für die Länderauswahl.


    Edit:
    Habe die neue AutoIt Version 3.2.6.0 drauf


    Einmal editiert, zuletzt von thunder-man ()

  • @thunder-man:


    Das mit dem Cookie war mir klar, nur da das ganze das gleiche Formular ist wie die Telefonnummern reicht einmal submit() und die Daten landen auch im Cookie; vorausgesetzt du läßt es nicht als Kommentar so stehen ;)



    Das das Fragezeichen bei mir funktioniert hat war wohl eher ein Fehler. Wenn du dir das Formular mal genau anschaust, ist (wenn man ein Fragezeichen sieht) im input "aAge" nichts gespeichert, das sieht man auch in der Console:


    Code
    _FFRecv: 100
    _FFSend: content.document.getElementById("aAge").value
    _FFRecv:
    _FFSend: FF__SearchImageLink(/alt[ \t]*=[ \t]*(.*)Angaben/)
    _FFRecv: 8


    Das Recv hat nach der Abfrage hat nichts zurückbekommen. Würde die ID nicht existieren käme eine Fehlermeldung wie z.B:

    Code
    repl>
    _FFRecv: @data:application/x-javascript,content.document.getElementById(%22sAge%22).value%0D%0A:1
    !!! TypeError: content.document.getElementById("sAge") has no properties


    Und da ja nichts in diesem Input drinsteht, reicht auch das hier:



    Viele Grüße
    Stilgar

  • Stilgar


    ich hatte das submit() gestern nur temporär ausgestellt, weil Peter nach 12 Uhr Nachtruhe hat.


    Nun ja, so wie der Code jetzt ist klappt´s. (THX) :party4:


    Lustig das mit dem ?


    Und der IE hat dann ein ? zurückgegeben, wo gar keines ist, das steht nähmlich in

    PHP
    <span
    id="aAgeDisplay">&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>


    Zitat

    ....einmal submit()


    ja das stimmt wohl, ist ja ein Div Fenster, daher ist es dann egal ob es auf ist oder zu, sieht halt nur cooler aus.


    Danke noch einmal, freue mich schön falls Du später mal ne Lösung für die Div Layer findest, aber nun habe ich Dich lange genug vom Weg abgehalten. lol


    so long
    Frank



    Edit:
    Hatte mich schon gewundert, warum nun immer das Fenster für Alter aufpoppt, auch wenn schon ein Cookie da ist.


    Hast aus versehen sAge anstelle von aAge geschrieben...
    If Not _FFGetValueById($Socket,"sAge") Then ; kein Inhalt in sAge!

    Einmal editiert, zuletzt von thunder-man ()

  • Hey,
    habe das Peterzahlt Script um eine Warteschleife Funktion erweitert.
    Wenn diese kommt und man geduldig gewartet hat, öffnet sich ein weiteres Fenster, bei welchen man innerhalb von einer Minute auf dem Button klicken soll. Der Counter wird auch im FF Titelzeile angezeigt.
    ;=======================================================================
    Func _WinTitle()
    $Window = _FFSetGet($Socket, "title")
    If $Window = 'Bitte innerhalb von 59 Sekunden bestätigen! - Mozilla Firefox' Then
    Sleep(100)
    _FFClickImage ($Socket, "btn_callForFree2.gif", "src")
    AdlibDisable()
    EndIf
    EndFunc ;==>_WinTitle
    ;=======================================================================


    Allerdings bin ich nicht ganz zufrieden, die AdlibEnable("_WinTitle", 500) Funktion wird beendet, wenn das "Bitte innerhalb ..." Fenster kommt, allerdings nur dann ...


    Hier mal das ganze Script, (Ist von der IE Version, muss ich noch aufräumen.)


    Der Vorteil der FF Version gegenüber der IE Version ist, das man während
    des telefonierens weiter arbeiten kann. (Mails lesen usw.)


    Einmal editiert, zuletzt von thunder-man ()

  • Habe ein Problem mit True und False.
    Egal ob ich schreibe:
    If $find_1 = True Then
    oder
    If Not $find_1 = False Then


    Die Funktion unten wurde bei False ausgeführt. (Soll aber bei True)
    ;=======================================================================
    Func _StateNoWait()
    Local $find_1, $State
    $find_1 = _FFAction ($Socket, "find", "Einen Augenblick bitte")
    If Not $find_1 = False Then
    $State = _FFDisConnect($Socket)
    MsgBox(0, "DisConnect _StateNoWait", $State)
    AdlibDisable()
    EndIf
    Sleep(1000)
    ;_StateWait()
    EndFunc
    ;=======================================================================


    _FFSend: content.document.frmCall.submit()
    _FFRecv:
    _FFSend: content.find("Einen Augenblick bitte")
    _FFRecv: false


    Obwohl der Befehl Disconnect bei True, oder Not False ausgeführt werden soll, wurde er bei false ausgeführt....


    Kann mir da jemand helfen?

  • OK Danke werde das sofort mal umsetzen.


    (Die Hilfe sagt dazu)
    $bool= False
    if NOT $bool = true Then Msgbox(0,"Bool comparison", "OK")


    Edit:
    Ach, das ist echt ärgerlich, das Problem bleibt das selbe, obwohl
    $find_2 false ist, wird die Funktion ausgeführt. (If $find_2 Then)


    so long
    Frank

    2 Mal editiert, zuletzt von thunder-man ()

  • Das "Problem" bei find ist, das zwar der logische Zustand in diesem Fall "false" ist, dieser aber als String von MozRepl zurückkommt. Du darfst in diesem Fall nicht den logischen Zustand abfragen sondern mußt ein Stringvergleich machen, also:


    If $find ="true" Then


    und da ein String mit Inhalt immer logisch "true" ist, funktioniert deine Abfrage auch nicht.


    Ist unschön, ich hab es bei _FFAction mal umgebaut:
    http://www.thorsten-willert.de/Software/AutoIt/unstable/
    damit sollte dein Programm funktionieren.



    Grüße
    Stilgar

  • Oh, so ist das, teste gleich Deine neue V.


    Aber wenn ein String zurück kommt, dann kann ich doch ne normale Abfrage machen und den String abfragen, oder?
    If $find ="true" Then


    If $find ="false" Then


    THX
    Frank

  • Super, Danke.


    Kann es im Moment nicht testen, weil ich nicht in der Warteschlange komme. (lol)
    Ich muss ja sehen, das in meine 2. Funktion gesprungen wird...


    ;=======================================================================
    Func _StateNoWait()
    Local $find_1, $State
    $find_1 = _FFAction ($Socket, "find", "Einen Augenblick bitte")
    If $find_1 Then
    $State = _FFDisConnect($Socket)
    MsgBox(0, "DisConnect _StateNoWait", $State)
    AdlibDisable()
    EndIf
    Sleep(1000)
    _StateWait()
    EndFunc
    ;=======================================================================
    Func _StateWait()
    Local $find_2
    $find_2 = _FFAction ($Socket, "find", "Bitte haben Sie etwas Geduld.");Im Moment sind leider alle Leitungen belegt.
    If $find_2 Then
    TraySetIcon("Blankr16.ico") ;rot
    TraySetState(4)
    AdlibDisable()
    AdlibEnable("_StateWaitEnd", 500)
    EndIf
    EndFunc
    ;=======================================================================


    Find ist ja ne interne Firefox Funktion und es ist ja logisch, das das gefundene nach dem suchen markiert wird. Ich hätte es aber lieber ohne.
    Gibt´s ne Option das abzustellen?

  • Hi Hi, sieht in der Tat für mein vorhaben ein bisschen komisch aus.
    (Fast aggressiv lol)
    Wäre schön, wenn´s da was zu machen wäre.



    Edit:
    Wenns keine Option gibt, die Markierung auszustellen, dann kann man das vielleicht auch mit nem klick erledigen, so ist die Markierung nur kurz zu sehen.


    Habe die neue klick Funktion noch nicht benutzt, wie wendet man die denn
    an, wenn ich z.B einfach irgendwo im Fenster klicken will.
    (Ne stelle mit ID suchen?)


    greeting
    Frank

    Einmal editiert, zuletzt von thunder-man ()