Efectivamente, estoy buscando un clon de AutoIt para Linux.
Conozco herramientas como Sikuli , Javaauto , etc., pero simplemente no funcionan, porque dependen de las coordenadas x, y y, por ejemplo, no pueden encontrar una ventana o elemento de menú según el texto del título.
Quiero algo que pueda encontrar en la ventana según su título, o que pueda hacer clic en el botón con la etiqueta 'Aceptar'.
Busqué en Google y revisé esta pregunta de SuperUser y esta pregunta So de cinco años , de la cual ahora procederé a copiar descaradamente partes grandes, ya que el OP @Xeddy hizo un buen trabajo al establecer los requisitos.
Aquí hay un script de muestra simple:
Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("This is some text.")
WinClose("Untitled - Notepad")
WinWaitActive("Notepad", "Save")
Send("!n")
Ejecute el script y verá que se abre el Bloc de notas, aparece un texto y luego se cierra.
Ahora, el ejemplo anterior, aunque un poco inútil, es una demostración del tipo de funcionalidad y simplicidad que estoy buscando. Aquí hay una explicación para aquellos que no hablan AutoIt:
----Comienzo de la Explicación del Código ----
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
----Fin de la explicación----
Entonces, como puede comprender, las características son bastante obvias: la capacidad de simular fácilmente las funciones del teclado y el mouse, leer la entrada, procesar y mostrar la salida, ejecutar programas, manipular ventanas, registrar teclas de acceso rápido, etc. corchetes innecesarios, declaraciones de clase, etc. En resumen: simple.
Quizás lo mejor de AutoIt, de lo que parecen carecer todos los demás, es que no se basa en las coordenadas x, y: uno puede buscar una ventana por título (incluso esperar a que aparezca).
Plus AutoIt utiliza un lenguaje de secuencias de comandos básico, con conceptos de programación normales como declaraciones IF, bucles, etc.
¿Hay algo tan poderoso para Linux?
En Linux, puede usar scripts de shell (como Bash ) junto con las herramientas de línea de comandos relevantes que se describen a continuación.
xdotool
Esta es una herramienta de línea de comandos para falsificar entradas desde el mouse y el teclado. También es compatible con las acciones del administrador de ventanas, como mover, activar y otras acciones en las ventanas.
Página de inicio: jordansissel/xdotool en GitHub
Instalar a través de:sudo apt-get install xdotool
Ejemplo de guión de muestra:
WID=$(xdotool search --name "Some Window Title")
xdotool key --window $WID --delay 500 space Tab Return Tab space Alt+n
Relacionado: ¿Cómo controlar programáticamente las aplicaciones reenviadas X11?
Hay herramientas similares a comandos para administrar ventanas y mostrar aplicaciones X como xwininfo
, xdpyinfo
y xprop
otras (consulte man
para obtener más detalles). Junto con los ya mencionados xdotool
, se pueden usar como parte del script de shell para automatizar y controlar las ventanas X.
expect
Hay una expect
línea de comando y se usa para controlar procesos de terminal. Entonces, si su aplicación GUI puede ser controlada por la línea de comandos y devolver algún resultado, esta es la herramienta que puede usar.
Por ejemplo, puede usar mezclarlo con 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 }
Nota: Lo anterior es solo un ejemplo de pseudocódigo, no he probado el código anterior. Solo se usa como referencia.
Para controlar aplicaciones de Windows en Linux, como notepad.exe
, puede usar AutoHotkey (AHK) en Linux ejecutándolo en Wine. Así es como winetricks
se usa en Linux (ver w_ahk_do()
ensrc/winetricks
), por ej.
wine AutoHotkey.exe script.ahk
AutoHotkey es compatible con el lenguaje de secuencias de comandos y es una herramienta poderosa muy subestimada. Para ver algunos ejemplos de código, consulte Stack Overflow .
Al igual que arriba, puede ejecutar AutoIt en Wine .
El AutoIt Editor SciTE 3.3.0 funciona perfectamente. Es posible escribir programas, construirlos o compilarlos. No intenté pasarlos por el interior del vino, ya que parece una tontería. Au3Check.exe, Au3Info.exe, AutoIt3.exe se inician sin problemas.
Ver también: Comparación de herramientas de prueba de GUI en Wikipedia
Para algunas bibliotecas de automatización de Python, consulte:
Falta en la lista de herramientas la herramienta UI Vision.
Quizás lo mejor de AutoIt, de lo que parecen carecer todos los demás, es que no se basa en las coordenadas x, y: uno puede buscar una ventana por título (incluso esperar a que aparezca).
hola
Mawg dice que reincorpore a Monica
Willll
Mawg dice que reincorpore a Monica
click the button labelled OK
kenorb