Используйте xvfb для автоматизации программы X

580
Luan Nico

Мне, к сожалению, приходится использовать эту проприетарную программу, которая входит в комплект поставки драйвера камеры. Я хочу выполнить с ним определенное действие, которое включает нажатие нескольких кнопок. И нет CLI.

Итак, как проще всего это автоматизировать? Я хотя и использовал xvfb, чтобы открыть программу в поддельной среде X, но тогда как мне поступить с операциями ввода? Это может быть пиксель в точке (x, y), но было бы еще лучше, если бы я мог ссылаться на кнопки и пункты меню.

Если есть более простой способ сделать это, пожалуйста, сообщите! Я не уверен, что xvfb - правильный метод. Я даже не знаю фактического названия того, что я пытаюсь достичь, поэтому поиск очень труден ...

2

1 ответ на вопрос

2
kenorb

Use xdotool which can fake keyboard/mouse input, window management, and more.

Sample usage based on the install_mt4-xdot.sh script which installs Windows app under wine:

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 

Using xdotool you can control any app or window.

However if it's wine app only ran under Xvfb, you can also consider using winetricks.

Похожие вопросы