Ich verwende Selenium mit Python und Chrome. Ich versuche, verschiedene Schlüssel zu halten - speziell "w, a, s und d". Ich habe die action_chains.key_press-Aktion von Selenium sowie die elem.send_keys-Methode gefunden. Das Problem bei der ersten Methode besteht darin, dass sie den Schlüssel nur so lange zurückhält, wie es erforderlich ist, um eine Aktionskette abzuschließen. Das Problem mit der elem.send_keys-Methode ist, dass sie kein Element zum Senden der Schlüssel hat.
Ich versuche, einen Webbrowser-basierten Roboter mit W-A-S-D zu steuern, also muss ich die Tasten für unterschiedliche Zeitspannen gedrückt halten.
Ich habe Folgendes versucht:
%Vor%sowie:
%Vor%Weder sind ideal.
Der aktuelle Treiber für Chrome (Version 2.30) implementiert das vorherige Protokoll, bei dem das Halten eines Schlüssels nur für eine Zusatztaste (Strg, Umschalt, Alt, Befehl) unterstützt wird.
Dieser Code funktioniert also mit Firefox, aber schlägt mit Chrome fehl , da das keyUp
-Ereignis für jedes keyDown
:
Aber seit Version 2.30 unterstützt der Chrome-Treiber send_command
, um direkt einen row-Befehl über das devtools-Protokoll zu senden.
Um dieses Problem zu umgehen, rufen Sie Input.dispatchKeyEvent auf, um Ereignisse auf niedriger Ebene zu senden.
Dies ist ein funktionierendes Beispiel mit Selenium / Chrome, das den Schlüssel w
während einer Sekunde enthält:
Selen-Aktionskette Sollte nur mit Zusatztasten (Strg, Alt und Shift) verwendet werden. Sie möchten also nur das Zeichen w-a-s-d drücken. so dass es nicht funktioniert hat.
Sie können beliebige GUI-Automatisierungswerkzeuge wie pyautogui usw. verwenden.
Bitte versuchen Sie den untenstehenden Code und lassen Sie es mich wissen.
%Vor%pyautogui.PAUSE = 10 Befehl macht 10 Sekunden Pause nach jedem PyAutoGUI Aufruf
Laut Selenium Dokumentation für key_down
, heißt es:
Sollte nur mit Zusatztasten (Strg, Alt und Shift) verwendet werden.
Ich habe die Dokumente nach einer alternativen Lösung durchsucht, aber es scheint, dass das Verhalten "Nicht-Modifier-Schlüssel zu halten" in Selen nicht möglich ist.