2 votes

Utiliser xvfb pour automatiser un programme X

Je suis malheureusement obligé d'utiliser ce programme propriétaire qui contient un pilote de caméra. Je veux effectuer une action spécifique avec lui, qui implique de cliquer sur quelques boutons. Et il n'y a pas de CLI.

Alors, quel est le moyen le plus simple d'automatiser cela ? J'ai pensé à utiliser xvfb pour ouvrir le programme dans un faux environnement X, mais alors comment faire pour effectuer les opérations d'entrée ? Il pourrait s'agir de cliquer sur un pixel à (x, y), mais ce serait encore mieux si je pouvais référencer des boutons et des éléments de menu.

S'il existe un moyen plus simple de le faire, dites-le moi ! Je ne suis pas sûr que xvfb soit la bonne méthode. Je ne connais même pas le nom réel de ce que j'essaie d'accomplir, alors la recherche est très difficile...

3voto

kenorb Points 22006

Utilisez xdotool qui peut simuler l'entrée du clavier et de la souris, la gestion des fenêtres, etc.

Exemple d'utilisation basé sur le install_mt4-xdot.sh script qui installe l'application Windows sous script :

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

Utilisation de xdotool vous pouvez contrôler n'importe quelle application ou fenêtre.

Cependant, si l'application Wine ne fonctionne que sous Xvfb, vous pouvez également envisager d'utiliser winetricks .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X