Tatsächlich suche ich nach einem AutoIt - Klon für Linux.
Mir sind Tools wie Sikuli , Javaauto usw. bekannt, aber sie werden es einfach nicht schneiden, da sie sich auf x-, y-Koordinaten verlassen und beispielsweise kein Fenster oder Menüelement basierend auf seinem Titeltext finden können.
Ich möchte etwas, mit dem ich das Fenster anhand seines Titels finden oder auf die Schaltfläche mit der Bezeichnung „OK“ klicken kann.
Ich habe gegoogelt und diese SuperUser-Frage und diese fünf Jahre alte So-Frage überprüft - von der ich jetzt große Teile schamlos kopieren werde, da das OP @Xeddy so gute Arbeit geleistet hat, um die Anforderungen anzugeben.
Hier ist ein einfaches Beispielskript:
Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("This is some text.")
WinClose("Untitled - Notepad")
WinWaitActive("Notepad", "Save")
Send("!n")
Führen Sie das Skript aus und Sie werden sehen, dass Notepad geöffnet ist, etwas Text erscheint und dann geschlossen wird.
Nun ist das obige Beispiel, obwohl es etwas sinnlos ist, eine Demo der Art von Funktionalität und Einfachheit, nach der ich suche. Hier ist eine Erklärung für diejenigen, die kein AutoIt sprechen:
----Beginn der Erläuterung des Codes ----
Asks user to input some text and stores it in varInput Runs notepad.exe Waits till window exists and is active Sends the contents of varInput as a series of keystrokes Sends keystrokes to go to File -> Exit Waits till the "Save" window is active Sends some more keystrokes Shows a Message Box with some text and the contents of a variable Registers a hotkey, Win+N, which when pressed executes notepad.exe
----Ende der Erklärung----
Wie Sie verstehen können, sind die Funktionen ziemlich offensichtlich: Die Fähigkeit, Tastatur- und Mausfunktionen einfach zu simulieren, Eingaben zu lesen, Ausgaben zu verarbeiten und anzuzeigen, Programme auszuführen, Fenster zu manipulieren, Hotkeys zu registrieren usw. unnötige Klammern, Klassendeklarationen etc. Kurz gesagt: Einfach.
Das vielleicht Beste an AutoIt, das allen anderen zu fehlen scheint, ist, dass es nicht auf x,y-Koordinaten angewiesen ist - man kann nach einem Fenster nach Titel suchen (sogar warten, bis es erscheint).
Außerdem verwendet AutoIt eine Basic-ähnliche Skriptsprache mit normalen Programmierkonzepten wie IF-Anweisungen, Schleifen usw
Gibt es etwas so Mächtiges für Linux?
Unter Linux können Sie das Shell-Skripting (z. B. Bash ) zusammen mit den unten beschriebenen relevanten Befehlszeilentools verwenden.
xdotool
Dies ist ein Befehlszeilentool zum Vortäuschen von Eingaben von Maus und Tastatur. Es unterstützt auch Window-Manager-Aktionen wie Verschieben, Aktivieren und andere Aktionen auf Fenstern.
Homepage: jordansissel/xdotool bei GitHub
Installieren über:sudo apt-get install xdotool
Beispielskriptbeispiel:
WID=$(xdotool search --name "Some Window Title")
xdotool key --window $WID --delay 500 space Tab Return Tab space Alt+n
Verwandt: Wie kann man von X11 weitergeleitete Apps programmgesteuert steuern?
Es gibt befehlsähnliche Tools zum Verwalten von Fenstern und Anzeigen für X-Apps wie xwininfo
, xdpyinfo
, xprop
und andere (siehe man
für weitere Details). Zusammen mit den bereits erwähnten xdotool
können sie als Teil des Shell-Skripts verwendet werden, um X-Fenster zu automatisieren und zu steuern.
expect
Es gibt eine expect
Befehlszeile, die zur Steuerung von Terminalprozessen verwendet wird. Wenn Ihre GUI-Anwendung also über die Befehlszeile gesteuert werden kann und einige Ausgaben zurückgibt, ist dies das Tool, das Sie verwenden können.
Zum Beispiel können Sie mix it with verwenden xdotool
:
#!/usr/bin/expect
set timeout 360
spawn some_GUI_command & # Replace with your command.
WID=$(xdotool search --name "My GUI Title")
xdotool set_window --overrideredirect 1 $WID windowunmap $WID windowmap $WID
xdotool windowsize $WID 10 100%
xdotool behave $WID mouse-enter windowfocus windowsize --usehints 80 100% &
xdotool behave $WID mouse-leave windowsize 4 100% &
xwininfo -id $WID -tree
expect "Setup" { xdotool key --window $WID --delay 500 Tab Return }
Hinweis: Oben ist nur ein Pseudo-Code-Beispiel, ich habe den obigen Code nicht getestet. Es dient nur als Referenz.
Zur Steuerung von Windows-Apps unter Linux wie z . B. notepad.exe
können Sie AutoHotkey (AHK) unter Linux verwenden, indem Sie es unter Wine ausführen. So wird winetricks
es unter Linux verwendet (siehe w_ahk_do()
insrc/winetricks
), z
wine AutoHotkey.exe script.ahk
AutoHotkey unterstützt die Skriptsprache und ist ein sehr unterschätztes leistungsstarkes Tool. Einige Codebeispiele finden Sie unter Stack Overflow .
Genau wie oben können Sie AutoIt unter Wine ausführen .
Der AutoIt Editor SciTE 3.3.0 läuft einwandfrei. Es ist möglich, Programme zu schreiben, zu bauen oder zu kompilieren. Ich habe nicht versucht, sie in Wein laufen zu lassen, da es sinnlos erscheint. Au3Check.exe, Au3Info.exe, AutoIt3.exe starten ohne Probleme.
Siehe auch: Vergleich von GUI-Testwerkzeugen bei Wikipedia
Informationen zu einigen Python-Automatisierungsbibliotheken finden Sie unter:
In der Liste der Tools fehlt das UI Vision-Tool.
Das vielleicht Beste an AutoIt, das allen anderen zu fehlen scheint, ist, dass es nicht auf x,y-Koordinaten angewiesen ist - man kann nach einem Fenster nach Titel suchen (sogar warten, bis es erscheint).
Sikuli und UI Vision können dies beide mit integrierter OCR tun
holroy
Mawg sagt, Monica wieder einzusetzen
willll
Mawg sagt, Monica wieder einzusetzen
click the button labelled OK
kenorb