FF-Management - FireFox.au3

  • hi


    kann mir jemand mal einen tip geben wie man die _ffformsubmit benutzt?
    also ich habe ein formular: 2 submit button´s. beide haben den namen dl nur die value unterscheidet sich. pre und fr. weiß hier jemand wie man das machen kann?


    <input type="submit" name="dl" value="PRE">
    <input type="submit" name="dl" value="Fr">


    mfg bjoerni

    3 Mal editiert, zuletzt von bjoerni (23. November 2007 um 14:44)

  • wäre es möglich, noch eine "click" funktion einzubauen, bei der man koordinaten verwenden kann? so wie bei "Click" aus autoit sozusagen...

  • @bjoerni:
    Du könntest mal versuchen per _FFClick und dem entsprechenden Form-Element das Formular abzusenden, siehe auch hier: http://de.selfhtml.org/javascript/objekte/elements.htm

    @Lon:

    Ich habe mir mal diese Funktion notiert und werde mal sehen ob ich das umsetzen kann. In der Zwischenzeit könntest du dir auch selbst vielleicht etwas entsprechendes per JavaScript bauen ( http://de.selfhtml.org/javascript/objekte/event.htm )
    und per _FFSetGet an den Browser übermitteln.

    Viele Grüße
    Stilgar

    Einmal editiert, zuletzt von Stilgar (17. Dezember 2007 um 14:16)

  • vielen dank! auch für den hinweis, dass es mit js möglich ist, wobei js für mich völliges neuland ist. aber ich schaus mir mal an.
    freut mich, dass es da hoffnung gibt...

    mfg

  • so, bin auch etwas am bauen, fürs erste geht auch alles, ich rufe firefox mit diesen parametern auf:

    Code
    $Socket = _FFStart("http://www.google.de","ebot", 1, False, $IP)

    das richtige profil wird gestartet, die url aufgerufen. doch dann passiert nixmehr, die konsole spuckt folgendes aus:

    Spoiler anzeigen

    __FFStartProcess: C:\PROGRA~1\Mozilla Firefox\firefox.exe" -repl -P "ebot"
    _FFConnect: Socket: 516
    __FFSend: function FF__SimulateClick(oObject){try {var evt = document.createEvent("MouseEvents");evt.initMouseEvent("click", true, true, window,0, 0, 0, 0, 0,false, false, false, false,0, null);oObject.dispatchEvent(evt);return 1;} catch(e) {return 0;}}
    __FFRecv:
    __FFSend: function FF__SearchImageLink(RegEx){var html;for (i=0;i<content.document.links.length;i++){html=content.document.links.innerHTML;if (RegEx.test(html) && html.toLowerCase().indexOf("<img") != -1) return i;}return -1;}
    __FFRecv:
    __FFSend: function FF__SearchLink(sMode,sSearch){with(content.document) {var value;for (i=0;i<links.length;i++){switch (sMode) {case "href": value=links.href; break;case "text": value=links
    .text; break;case "id": value=links[i].id; break;case "name": value=links[i].name; break;case "title": value=links[i].title; break;default: return -1;}if (value.indexOf(sSearch) != -1) return i;}return -1;}}
    __FFRecv:
    __FFSend: content.document.location.href="http://www.google.de"
    __FFRecv: "http://www.google.de"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    __FFSend: document.getElementById('statusbar-icon').value
    __FFRecv: "100"
    _FFLoadWait ==> Timeout: Can not check site status.
    _FFOpenURL ==> Socket Error


    FirefoxVersion: 2.0.0.11
    OS: Vista
    [/i][/i][/i]

  • jep, das hat geholfen, danke. wäre ziemlich toll, wenns in der hilfe kleine beispiele gäbe, aber das ist sicher zuviel aufwandt?

  • freut mich :)

    zZ will ich einen button anklicken, der keinen eigenen link hat. er heist "Login".


    der link sieht so aus:
    <input type="Submit" name="checkid" value="Login" style="width:90px">


    _FFClick($socket, "checkid")
    geht nicht. wie muss ich das anpacken?

    edit: es bietet sich doch eher _FFFormSubmit
    an, habe allerdings folgendes problem:

    folgender quelltext ist gegeben:

    Spoiler anzeigen


    <form action="" method="post">
    <td align="center"> Nickname<br>
    <input type="Text" name="userid" value="" style="width:90px">
    <br>

    Passwort<br>
    <input type="Password" name="passwort" value="" style="width:90px;">
    <br>
    <select name="select" size="1" style="width:90px;">
    <option value="true" SELECTED>Mit Autologin&nbsp;</option>
    <option value="false">Ohne Autologin&nbsp;</option>
    </select>

    <br>
    <input type="Submit" name="checkid" value="Login" style="width:90px">
    <br>
    </td>
    </form>

    es gibt weder id noch name, wie bestätige ich den login button?

    2 Mal editiert, zuletzt von Lon (26. Dezember 2007 um 18:54)

  • @Lon:
    Wenn ein Formular keinen Namen hat, kannst du auch die Nummer der Formulares verwenden bei nur einem Formular auf der Seite reicht z.B. schon:

    [autoit]

    _FFFormSubmit( $Socket )

    [/autoit]

    ansonsten:

    [autoit]

    _FFFormSubmit( $Socket , $Nummer )

    [/autoit]

    bei einem Formular mit Namen brauchst du allerdings:

    [autoit]

    _FFFormSubmit( $Socket , "NameDesFormulars" , "name")

    [/autoit]

    Viele Grüße
    Stilgar

  • hmm danke erstmal.

    eine nummer finde ich nicht...
    fehlermeldung bei der ersten variante:
    _FFFormSubmit ==> Invalid value: INDEX

    bei dieser variante:

    _FFFormSubmit($socket,"","name")

    kommt

    _FFSend: content.document..submit()
    __FFWaitForRepl ==> MozRepl Exception: @data:application/x-javascript,content.document..submit()%0D%0A:1
    !!! TypeError: XML descendants internal method called on incompatible HTMLDocument

    edit:

    wenn ich

    _FFFormsubmit($socket,' ', 'name')


    benutze, ist der benutze pfad falsch, der sieht dann in etwa so aus: content.document..submit

    aber ich kann ja den typ nur so zu "name" ädern oder? "index" dars wohl nicht sein, wenns da kein index gibt... zumindest kommt da

    "_FFFormSubmit ==> Invalid value: INDEX "

    bin etwas verwirrt, habe schon viel herumprobiert ^^

    2 Mal editiert, zuletzt von Lon (27. Dezember 2007 um 03:22)

  • Hallo,
    die Nummer des Formulars wirst du auch nicht finden, die ergibt von selbst. Jedes Formular bekommt intern eine Nummer zugewiesen, in der Reihenfolge, wie es im Quelltext steht (von 0-n), siehe auch:

    http://de.selfhtml.org/javascript/objekte/forms.htm

    das erste Formular kann man also mit _FFFormSubmit($socket,0,"index") absenden.

    Das es ohne Angabe nicht funktioniert muß wohl noch ein Fehler in der FF.au3 sein.

    Viele Grüße
    Stilgar

  • Hallo Thorsten,
    danke, das Du Deine wenige Zeit in der FF.au3 investierst...

    Ich würde noch einmal gerne den Thread 138 in Erinnerung bringen.
    Problem: Die Seite der Fritz!Box lässt sich nicht aufrufen.

    Meldung:

    _FFStart ==> Invalid data type: http://fritz.box/cgi-bin/webcm?getpage=.…dex_inhalt.html

    Du meintest, es könne vielleicht ein Problem mit RegEx sein ...

    Gibt´s da schon einen Lösungsansatz?

    In diesem Sinne
    Wünsche Euch allen einen guten Rutsch ins neue Jahr :thumbup:

    so long
    Frank

  • Hallo Frank,
    tut mir leid, ich bin noch nicht dazu gekommen die RegEx zu überprüfen. Ich bin gerade unter der Woche nicht zu hause und habe leider (noch) keinen Rechner dabei. Aber wenn jemand Zeit und Lust hat, kann er ja mal die Funktion _FFIsURL überprüfen, diese beschwert sich in diesem Fall über die URL.

    Viele Grüße und noch ein gutes Neues Jahr nachträglich an alle!
    Thorsten

  • Hey
    Thorsten, wünsche Dir und all den anderen auch ein frohes neues Jahr.

    Leider habe ich noch nie mit RegEx gearbeitet, deshalb wäre es echt toll, wenn sich jemand findet und später
    mal der Sache annimmt.

    Na im Moment bin ich eh noch an Joomla am wurschteln ...

    In diesem Sinne
    Frank

  • so... ich bin mit meinem projekt dank stilgar um welten weiter, aber eine sache habe ich immernoch nicht hinbekommen: form submit... nun gibt es eine erweiterung für firefox names greaemonkey, welche javascript ausführt. dazu hat jemand einen script geschrieben:


    Spoiler anzeigen

    quelle: http://labs.beffa.org/greasemonkey/

    das funktioniert hervorragend, aber ich würde es gerne in mein autoitprojekt implementieren, sprich: die gleiche funktionalität auch ohne greasemonkey mit der ff.au3 erreichen. sollte für den kenner nicht schwer sein, aber ich weiß nicht so recht wo anfangen... es geht nur darum, dass forms automatisch bestätigt werden, und das habe ich noch immer nicht hinbekommen mit formsubmit und _ffclick, auch nach stundenlagem probieren.

    naja villeicht mag mir ja jemand helfen :)

    Lg

  • Teste doch mal
    _FFSetGet($FireFox,"document.all......")
    oder schau dir mal den submit-button an. Vielleicht ruft der auch eine Javascript-Funktion au. Das kannst du dann auch machen:
    _FFSetGet($FF,"JavascriptFunc()")

  • hmm ich hab leider nicht viel ahnung von js, hatte mit formsubmit usw schon einiges versucht, auch mit click und clicklink usw.. das problem ist, dass das form keinen namen hat, aber "" geht trotzdem nicht. am besten wäre wirklich die gleiche funktionalität wie die des scripts von oben, da ich es auf mehrere seiten anwenden will und die forms unterschiedlich heißen und benannt sind. wenn ich das richtig verstanden habe, wird immer etwas mit php gemacht, mit "post" falls das hilft. wenn ich dein beispiel weiterführe, müsste ich es seite für seite anpassen oder? zumal ich noch nicht wirklich weiß, wie ich es machen soll ;) aber danke für die antwort.

  • Versuchs doch mal so. Das ist das Script 1:1 übernommen. Also werden nur im FF gespeicherte Passwörter verwendet. Außerdem benötigt es zum Senden einen Submit-Button.

    Spoiler anzeigen
    [autoit]

    Func _PasswordFF($socket)
    $script = 'var al_KeyPressed = false;' &@LF _
    $script &= '' &@LF _
    $script &= 'var al_Init = function() {' &@LF _
    $script &= 'var passfield = false;' &@LF _
    $script &= 'if (!document.getElementsByTagName) return;' &@LF _
    $script &= 'var forms = document.getElementsByTagName("form");' &@LF _
    $script &= 'for (var i=0;i<forms.length;i++) {' &@LF _
    $script &= 'var formElement = forms[i].elements;' &@LF _
    $script &= 'for (var j=0; j < formElement.length; j++) {' &@LF _
    $script &= 'var thisElement = formElement[j];' &@LF _
    $script &= 'if (thisElement.type == "password") {' &@LF _
    $script &= '//to prevent submit to stupid site which put fake login / pass value' &@LF _
    $script &= 'if (thisElement.value != thisElement.defaultValue) {' &@LF _
    $script &= 'passfield = true;' &@LF _
    $script &= 'thisElement.addEventListener("keypress", al_KeyPress, true); ' &@LF _
    $script &= '}' &@LF _
    $script &= '}' &@LF _
    $script &= '}' &@LF _
    $script &= '}' &@LF _
    $script &= 'if (passfield)' &@LF _
    $script &= 'setTimeout(al_CheckPass, 10);' &@LF _
    $script &= '}' &@LF _
    $script &= '' &@LF _
    $script &= 'var al_KeyPress = function (){' &@LF _
    $script &= 'al_KeyPressed = true;' &@LF _
    $script &= '}' &@LF _
    $script &= '' &@LF _
    $script &= 'var al_CheckPass = function () {' &@LF _
    $script &= 'if (!al_KeyPressed) {' &@LF _
    $script &= 'if (!document.getElementsByTagName) return;' &@LF _
    $script &= 'var forms = document.getElementsByTagName("form");' &@LF _
    $script &= 'for (var i=0;i<forms.length;i++) {' &@LF _
    $script &= 'var formElement = forms[i].elements;' &@LF _
    $script &= 'for (var j=0; j < formElement.length; j++) {' &@LF _
    $script &= 'var thisElement = formElement[j];' &@LF _
    $script &= 'if (thisElement.type == "password") {' &@LF _
    $script &= 'if(thisElement.value.length>1){' &@LF _
    $script &= 'submit = false;' &@LF _
    $script &= 'for (var input, k=0; input=formElement[k]; k++)' &@LF _
    $script &= 'if (input.type == "submit")' &@LF _
    $script &= 'submit = input;' &@LF _
    $script &= ' ' &@LF _
    $script &= 'if (submit) {' &@LF _
    $script &= 'submit.click();' &@LF _
    $script &= '} else {' &@LF _
    $script &= 'forms[i].submit();' &@LF _
    $script &= '}' &@LF _
    $script &= ' ' &@LF _
    $script &= 'return;' &@LF _
    $script &= '}' &@LF _
    $script &= '}' &@LF _
    $script &= '}' &@LF _
    $script &= '}' &@LF _
    $script &= 'setTimeout(al_CheckPass, 100);' &@LF _
    $script &= '}' &@LF _
    $script &= '}' &@LF _
    $script &= ' ' &@LF _
    $script &= 'al_Init();'
    Return _FFSetGet($Socket, $script)
    EndFunc

    [/autoit]