1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Rick Dangerous

Beiträge von Rick Dangerous

  • Firefox Quantum: Button per Text oder Div klicken möglich?

    • Rick Dangerous
    • 22. Dezember 2017 um 16:29

    Hallo in die Runde,

    ich suche Rat zum automatisierten Klicken von Buttons, die sich nicht über das AutoIt Window Info Tool auslesen lassen.

    In einer Datenbank im eigenen Intranet, die im Firefox browserbasiert läuft, werden über Bearbeitungsmasken verschiedene Daten händisch eingepflegt. Das Einpflegen der Daten soll auch weiterhin händisch passieren, jedoch kostet bereits das Anlegen leerer Elemente für diese Daten immens viel Zeit und Nerven, da jedes leere Element (z. B. Bild, Titel, Beschreibungstext) mit drei Mausklicks angelegt werden muss. Das Ganze sieht dann wie folgt aus:

    Mittels Mouseover oder auch Klick auf "Neues Element" (Btn. 1) -> es klappt dann einen Liste zur Auswahl aus und man klickt bspw. auf "Element 1" (Btn. 2) -> und abschließend noch auf "Speichern", um den Vorgang abzuschließen. Danach wird das nächste Element angelegt usw. Die Maske sieht beispielhaft so aus:

    Ich habe bereits mit AutoIt ein Programm geschrieben, das folgendes macht:

    - In einer kleinen GUI mit Checkboxen und UpDown bzw. Inputfeld für jedes Element kann ausgewählt werden, a) ob überhaupt Elemente angelegt werden sollen und b) wenn ja, wieviele davon

    - über GUICtrlRead Anweisungen wird selektiert, welche Checkboxen angewählt sind und welche Anzahl eingegeben wurde, das wird in Variablen geschrieben

    - Nach Drücken auf den Button "Elemente anlegen" werden Funktionen für jedes Element nacheinander ausgeführt, bis alles abgearbeitet ist

    - Am Ende erscheint eine MsgBox als Report, was angelegt bzw. nicht angelegt wurde

    - Das Script enthält einen HotKeySet, um den Vorgang jederzeit mittels ESC-Taste pausieren zu können, es erscheint dann eine MsgBox $YESNO (4100) die abfragt, ob abgebrochen oder weitergemacht werden soll. Wird abgebrochen, erscheint ebenfalls ein Report der Elemente, die bis zum Abbruch angelegt wurden

    Die GUI sieht so aus:

    CONTENTCREATOR.jpg


    Ich habe noch Zusätze wie "GUI immer im Vordergrund" (per WinSetOnTop) und die Platzierung in der unteren rechten Bildschirmecke in Abhängigkeit von der Auflösung eingebaut (WinGetPos, WinMove usw.).

    Alles funktioniert 1A und ich bin sehr glücklich darüber, denn ich bin AutoIt Anfänger und habe mir jeden Schritt mit viel Try & Error, Abschauen von existierenden Scripts und Verstehen lernen, Tutorials und Hilfe-Lesen erarbeitet.

    Mein Problem bzw. eher "Wunsch":

    Im Moment kann ich nur auf meinem Rechner alles wie gewünscht laufen lassen, denn das Klicken der Buttons erfolgt schlicht durch MouseClick Befehle, die von Koordinaten des einen Buttons + Klick zum nächsten wandern usw., bis die Funktion für jedes Element mittels "Do Until" Schleife durchlaufen ist.

    Ich möchte das jedoch auch auf anderen Rechnern von Kollegen einsetzen, auf denen aber ggf. andere Auflösungen und damit andere Koordinaten der Buttons gegeben sind. Anpassen wäre zwar möglich, aber es ist nicht gerade eine professionelle Lösung, alles per Mousemoves zu machen... Oder was wäre, wenn sich mal eine Position in der Maske ändert? Alles nicht optimal.

    Ich würde gerne entweder den Text der Buttons auslesen und dann anklicken lassen oder aus dem HTML heraus im Div-Container ansprechen. Wie gesagt, mittels AutoIt WindowInfo ist keine Informationen auszulesen.

    Fakt ist, dass die Anwendung nur im Firefox laufen kann, nicht im Internet Explorer, daher kann IE.au3 nicht verwendet werden. Mir ist bekannt, dass die FF.au3 zur Steuerung des Firefox seit Version 57 (Quantum) nicht mehr funtioniert, da die Extension nicht mehr supported wird, sonst wäre eine Steuerung mit diesem Include einfach.

    Ich habe mal per "Element untersuchen" das innere und äußere HTML sowie den XPath der Buttons "Neues Element" und "Element 1" ausgelesen (beispielhaft):

    Neues Element (inneres HTML)

    <div id="SelectNewElement" onmouseover="NewElementOptions()" style="display: block;">Neues Element</div> (äußeres HTML)

    //*[@id="SelectNewElement"] (XPath)

    Element 1 (inneres HTML)

    <a href="javascript:createElement('Element 1')" style="cursor: pointer;">Element 1</a> (äußeres HTML)

    /html/body/div[10]/div[1]/div[1] (XPath)

    Kann mir jemand (für einen Anfänger/leicht Fortgeschrittenen) evtl. aufzeigen, ob es eine Möglichkeit gäbe, die Buttons eleganter anzusprechen als mit der Maus?

    Viele Grüße und schöne Weihnachten

  • Auf Webseite: ComboBox bzw. Dropdown-Liste aufklappen und Element auswählen - korrekte Methode?

    • Rick Dangerous
    • 8. Mai 2012 um 22:52

    Hi name22,

    danke Dir noch für deine Hilfe und den Code - wieder was gelernt :thumbup:

  • Auf Webseite: ComboBox bzw. Dropdown-Liste aufklappen und Element auswählen - korrekte Methode?

    • Rick Dangerous
    • 7. Mai 2012 um 16:58

    Danke für Deine schnelle Antwort. Ich habe wirklich auf der Seite geschaut, aber den Punkt bzgl. Nutzung wohl nicht gesehen, sorry. Danke für's drauf aufmerksam machen.
    Es geht nicht um speziell um den Online-Übersetzer. Jede andere Form von Dropdown-Liste, die sich auf einer Webseite befindet, ist mir recht.

    Ich hoffe, ich kann die Sample-Page von Thorsten Willert ersatzweise verlinken:
    http://ff-au3-example.thorsten-willert.de/

    Deine genannten Links sind mir zwar bekannt, aber ich konnte wie gesagt nicht die entsprechende Syntax für mein Anliegen herausfinden. Bei der Sample Page habe ich das Ansteuern von Forms bereits anhand von Beispielen nachvollzogen (fällt die Dropdown-Liste auch unter den Begriff "Forms"?). Allerdings check ich nicht, wie man den Punkt "Wählen Sie eine Pizza:" ansteuert und statt Default "Salami" was anderes auswählt.

    Könnte mir bitte jemand entsprechenden Code dafür zeigen bzw. noch besser ein Script dafür fertig machen, damit ich mal an einem konkreten Beispiel sehe, wie der Code überhaupt aussehen muss?

    Grüße, Rick

  • Auf Webseite: ComboBox bzw. Dropdown-Liste aufklappen und Element auswählen - korrekte Methode?

    • Rick Dangerous
    • 7. Mai 2012 um 15:42

    Hallo AutoIt-Gemeinde!

    Ich bin neu im Forum, gerade dabei AutoIt zu erlernen und möchte mich hiermit vorstellen 8)
    Habe bereits viele Themen durchforstet und mir so ein gewisses Grundwissen draufgeschafft, danke für die hilfreichen Beiträge und Infos schon mal an alle Gleichgesinnten hier!

    Konkret habe ich folgendes Anliegen und bitte um Eure Unterstützung:
    Ich möchte z. B. Klicks auf einer Webseite Verlinkungen automatisieren, was schon anständig klappt, aber ich komme einfach nicht beim Thema "ComboBox" bzw. "Dropdown-Liste" weiter. Eine Auswahlliste soll per Script aufklappen bzw. es reicht mir schon, wenn ein Element daraus einfach ausgewählt wird (fester String, der Inhalt der Liste verändert sich nicht).

    Mit ControlCommand konnte ich bisher auf Windows-Ebene Programme steuern (hier am simplen Beispiel der Zeichentabelle, in der eine Schrift ausgewählt wird):

    Nur Aufklappen der Auswahlliste:

    Code
    ControlCommand("Zeichentabelle", "", 105, "ShowDropDown", "")

    bzw. sofortige Auswahl eines Elements, ohne die Liste zu öffnen:

    Code
    ControlCommand("Zeichentabelle", "", 105, "SelectString", "Arial")

    Das klappt astrein, da ich mit AutoIt Window Info die ID des Controls auslesen kann - bei einer Webseite geht das aber anscheinend nicht (habe mehrere Seiten getestet). Außer Fenstertitel, Klasse und Mauskoordinaten bekomme ich keine Infos über die Liste (also das 'Control') auf der Seite.

    Konkret möchte ich das am Beispiel einer Seite testen, bei der das Ganze simpel nach zu vollziehen sein soll. Hier geht es um die Auswahl von Fremdsprachen.
    Folgendes Script läge erstmal nahe, funzt aber nicht, da ich anscheinend grundlegend was falsch mache und nicht verstehe wie man ein Steuerelement wie eine Dropdown-Liste online ansteuert. Es gibt soviele Beiträge, die selbst programmierte GUIs betreffen, aber für eine Webseite fand ich leider nichts umsetzbares...

    Funktionsumfang soll sein:
    - Die Seite wird aufgerufen (MozRepl aktiv und FF.au3 ist 4242-Bug frei ;) )
    - Die Liste der Sprachen soll aufklappen
    - oder gleich eine entsprechende Variante ausgewählt werden

    Code
    #include <FF.au3>_FFStart("http://www.dict.cc/?s=")If _FFIsConnected() ThenControlCommand("dict.cc | Wörterbuch Englisch-Deutsch", "", 1, "ShowDropDown", "")EndIf

    Falls ControlCommand überhaupt zutrifft, habe ich den Aufbau bisher wie folgt verstanden:
    ControlCommand ("Fenstertitel", "Fenstertext, kann aber leer bleiben", ID des Controls dass ich ansteuern will, "Befehl", "auszuwählendes Element")

    Die ID, die ich im Script mit "1" angegeben habe, damit die Seite zur Veranschaulichung überhaupt lädt, ist nicht korrekt.
    Im Quellcode der Seite ist der Auswahlliste eine ID zugeordnet und ein Default-Eintrag der Sprache vergeben.
    <select id="lpddbsf" style="padding:0;margin:0;vertical-align:middle" onchange="dd_changelang(this)"><option value="DEEN">

    Ich bin noch auf Befehle wie _GUICTRLCOMBOBOX gestoßen, die auch ansteuern sollen - bin jetzt aber total ratlos welche Methode überhaupt die richtige für mein Vorhaben ist.
    Deshalb meine Bitte um Unterstützung an Euch - kann mir jemand mein Script überarbeiten, für die entsprechende Webseite korrigieren und mir erklären, wie sich der Code zusammensetzt?

    Das wäre echt super, denn ich komme allein nicht mehr weiter - bin für jede Hilfe dankbar! ;(
    Grüße, Rick

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™