Verwenden Sie xvfb, um das X-Programm zu automatisieren

604
Luan Nico

Ich muss leider dieses proprietäre Programm verwenden, das einen Kameratreiber enthält. Ich möchte damit eine bestimmte Aktion ausführen, bei der einige Schaltflächen angeklickt werden. Und es gibt keine CLI.

Wie lässt sich dies am einfachsten automatisieren? Ich habe zwar xvfb verwendet, um das Programm in einer gefälschten X-Umgebung zu öffnen, aber wie sollte ich dann Eingabefunktionen ausführen? Es könnte Klickpixel bei (x, y) sein, aber es wäre noch schöner, wenn ich Schaltflächen und Menüelemente referenzieren könnte.

Wenn es einen einfacheren Weg gibt, sagen Sie es bitte! Ich bin mir nicht sicher, ob xvfb die richtige Methode ist. Ich weiß nicht einmal, wie genau ich das erreichen möchte, also ist das Suchen sehr schwer ...

2

1 Antwort auf die Frage

2
kenorb

Verwenden Sie xdotooldie Tastatur- / Mauseingabe, Fensterverwaltung und mehr.

Beispielnutzung basierend auf dem install_mt4-xdot.shSkript, mit dem die Windows-App unter Wine installiert wird:

wine setup.exe & echo "Waiting to initialize..." while ! WID=$(xdotool search --name "Setup"); do sleep 2 done  echo "Sending installer keystrokes..." >&2 xdotool key --window $WID --delay 500 space Tab Tab Tab Return Tab Tab Tab space Alt+n  echo "Waiting for installer to finish..." >&2 xwininfo -id $WID -tree while pgrep -l setup; do sleep 5; done  echo "Waiting program to start..." >&2 while ! WID=$(xdotool search --name "Title - *"); do sleep 2 done  echo "Closing application..." >&2 xdotool key --window $WID --delay 500 Escape Escape Alt+f x sleep 1 wineserver -k echo "Installation successful." >&2 

Mit können xdotoolSie jede App oder jedes Fenster steuern.

Wenn die Wein-App jedoch nur unter Xvfb ausgeführt wird, können Sie auch die Verwendung in Betracht ziehen winetricks.