Anfängerfrage -> Mausklick simulieren ohne Pos

  • Hallo,

    fange gerade an, mich mit Auto It auseinanderzusetzen, um eine bestimmte Klickreihenfolge zu simulieren. In einem Browser soll der Druck von Versandlabeln automatisiert werden. Mitarbeiter gibt in Browseranwendung ein Gewicht ein, alles andere soll dann automatisch laufen. Dazu meine allerwichtigste Frage, auf die ich leider noch keine Antwort bekommen habe: Kann ich einen Mausklick auf einen bestimmten Text in einem Fenster (Browser) simulieren oder geht ein Mausklick immer nur mit Koordinaten?

    Vereinfacht gesagt: WENN Text = "Label herunterladen" DANN klick da drauf ;)

    Geht das?


    Danke für die Antwort auf die vielleicht naive Anfängerfrage

    Florian

  • Geht das?

    Das kommt darauf an, mit welchem Browser Du arbeitest.

    Bei den aktuellen Browsern würde ich einen Blick auf die Webdriver-udf empfehlen.

    (das ist aber kein leichter Stoff, insbesondere nicht für Einsteiger)

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hi,

    nur mal so zum Verständnis

    Kann ich einen Mausklick auf einen bestimmten Text in einem Fenster (Browser) simulieren

    In der Regel wird in einem Browserfenster kein "Mausklick" ausgeführt, sondern dem Element in der Website eine Nachricht gesendet.

    Du arbeitest also nicht mit Mausklicks, sondern mit den Elementen der Website.

    Von da her sage ich jetzt einfach mal "JA" zu deiner Frage

    Geht das?

    Mach mal einen RECHTSKLICK auf das zu untersuchende Element (den Text auf deiner Website) und wähle dann im Menü "Element untersuchen" aus. Poste einfach mal das, was dort angezeigt wird.

  • Erstmal vielen Dank für eure Antworten und dafür, dass ich hier nicht gleich gegrillt wurde wegen meiner Anfängerfrage :)

    Der genutzte Browser ist Firefox, könnte aber auch auf Chrome oder Opera wechseln, Edge möchte ich eher weniger.

    Gerne erläutere ich mein Vorhaben anhand von Screenshots:

    Hier gebe ich rechts manuell ein Gewicht ein. Ab jetzt soll alles weitere automatisch laufen. Nachdem das Gewicht eingegeben wurde, soll AuoIt starten und auf den grünen Link links im Bild "klicken". Hier geht es nicht mit MausPos, da dieser grüne Link mal etwas höher oder tiefer im Bild liegen kann.

    Hier die Infos von "Untersuchen" des grünen Links:

    Daraufhin dauert es bis zu 10 Sekunden, die Seite lädt neu und es wird ein weiterer Link angezeigt, der immer mit ".. Label herunterladen" endet, der ein PDF herunterlädt, wenn er angeklickt wird.

    Klicke ich auf diesen Link, öffnet FoxIt PDF Reader das heruntergeladene PDF Dokument und der PDF Reader erhält auch den Fokus. Nun müsste ich ein STRG+P für den Druckauftrag übergeben. Standarddrucker ist voreingestellt. Mit OK wird der Druck gestartet, dann mit STRG+W das aktuelle Dokument im FoxIt geschlossen (oder mit ALT+F4 das ganze PDF Programm schließen), zurück zum Browser (der im Hintergrund weiterläuft) und wieder auf einen bestimmten Link im Fenster klicken.

    Hab's übrigens auch schon mit dem AutoIt Recorder versucht, aber der nimmt halt auch nur MausPos, was mir nicht weiterhilft :(

    Danke für den weiteren Input und Hilfestellung

    Florian

  • Und welche Webapplikation ist das? Handelt es sich um die Webseite eines Logistikunternehmens wie DHL, UPS, TNT usw. oder ist das ein anderes Produkt?

    Hintergrund der Frage:

    Sicher kann man Webseiten automatisieren indem man Benutzeraktionen wie Mausklicks simuliert. Sehr viel einfacher, zuverlässiger und performanter geht das aber, wenn die Webseite eine API für genau solche Zwecke bereitstellt. Dann reichen im Idealfall wenige Zeilen Text direkt an den Webserver ohne lahmen Browser dazwischen, damit er dir das gewünschte Dokument bereitstellt.

  • Danke, guter Input. Jedoch "nur" für die Klicks im Browser. Wenn das PDF heruntergeladen wurde und im PDF Reader FoxIt geöffnet wurde, geht's ja da erstmal weiter....

    Die Webseite ist Billbee - Auftragsverwaltung für Onlineshops: http://www.billbee.de - auf das Backend kommt man nur mit Anmeldung/Konto. Soweit ich weiß, haben die eine API, die man ansprechen kann....

  • Ich hab mal reingeschaut. Ich weiß nicht, ob du den Zugang zur API mitgebucht hast, aber wenn ja ist das der einfachste und sicherste weg, damit auch nichts schief geht.

    Mit https://app.billbee.io//swagger/ui/in…t_ShipWithLabel kann man das Gewicht setzen und mit https://app.billbee.io//swagger/ui/in…ateDeliveryNote das PDF für die Auslieferungsnachricht anfordern.

    Ich schätze, das sind die beiden Aufrufe, die du brauchst.

    Authentifizierung schaut auch sehr einfach aus:

    • "Contain a valid API Key identifying the application/developer. It has to be sent as the HTTP header X-Billbee-Api-Key" => HTTP Header mit X-Billbee-Api-Key und dem key als value
    • Contain a valid user login with billbee username and api password in form of a basic auth HTTP header => Authorization mit Basic auth

    Beispiel:

    X-Billbee-Api-Key: <your api key>

    Authorization: Basic AXVubzpwQDU1dzByYM==

    AXVubzpwQDU1dzByYM== ist der Base64 string von "username:Pa$$w0rd"

    Du musst dann die URLs die beim Link angegeben wurden mit ! https ! aufrufen und die geforderten JSON daten übergeben.

    So ähnlich dürfte der Code dann aussehen.

    MfG Kanashius.

  • Bzgl. Schritt 2 (Ausdruck der PDF):

    Dafür brauchst du normalerweise auch keine GUI Automatisierung eines PDF Viewers. Siehe z.B. hier https://www.autoitscript.com/forum/topic/16…ntly-print-pdf/

    Allerdings landet der Shellexecute Aufruf standardmässig beim Default Drucker des Benutzers. Daher wird im obigen Thread Sumatra erwähnt (portabler PDF Viewer, der scheinbar mit commandline Befehlen auch auf beliebigen anderen Druckern drucken kann).

    Alternativ könnte man mit Autoit aber sicher auch den aktuellen Standard Drucker ermitteln, auf einen anderen wechseln und danach wieder zurückstellen. ;)