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

  • 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

  • Geht es dabei speziell um das auslesen von dict.cc, oder ist das nur ein Beispiel? Ich frage nur, weil oft in den AGB der Seiten ein Automatisierungsprozess untersagt wird. Sowas können wir dann laut unseren Forenregeln nicht unterstützen ;).
    Im Fall von dict.cc:

    Zitat von Nutzungsbedingungen

    Sämtliche Dienste von dict.cc können kostenlos privat und geschäftlich im Web-Browser genutzt werden. Andere Arten der Nutzung, insbesondere automatisiertes Abfragen (Parsen) von dict.cc sind nur mit ausdrücklicher Genehmigung gestattet.


    Eventuell hilft dir auch das hier noch weiter: [Tut] FF.au3 – AutoIt-Funktionen im Browser
    Wobei ich mir nicht sicher bin, wie aktuell das ist :S. Das Prinzip sollte sich aber nicht großartig geändert haben.
    Sonst findest du auf http://thorsten-willert.de/ unter Software > FF.au3 auch Beispiele und eine Dokumentation die einige Funktionen näher erläutert.

  • 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

  • Mir ist das meistens zu blöd, deswegen mach ich das immer möglichst alles per WinHTTP oder TCP... Das heißt, ich kenne mich mit der FF.au3 nicht mehr so gut aus. ^^
    Dennoch funktioniert das hier bei mir (Abwandlung des Beispiels zu _SetValue):

    [autoit]

    #Include <FF.au3>

    [/autoit][autoit][/autoit][autoit]

    If _FFStart("http://ff-au3-example.thorsten-willert.de/", Default, 2) Then
    _FFSetValue("Schinken", "grundlage", "name")

    [/autoit][autoit][/autoit][autoit]

    _FFDisConnect()
    EndIf

    [/autoit]
  • Falls damit deine Probleme gelöst wurden, kannst du ja noch das Präfix deines Threads auf gelöst setzen indem du den ersten Beitrag bearbeitest. ;)
    ControlCommand und auch alle anderen Control... Befehle kannst du übrigens mit Firefox vergessen. Firefox zeichnet Webseiten mithilfe von Gecko auf den Bildschirm und dabei kommen keine Controls zum Einsatz (zumindest keine die man ohne weiteres ansteuern könnte).