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

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

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

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

1 ответ

Решение

Использование xdotool который может подделать ввод с клавиатуры / мыши, управление окнами и многое другое.

Пример использования на основе install_mt4-xdot.sh скрипт, который устанавливает приложение для Windows под 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

С помощью xdotool Вы можете контролировать любое приложение или окно.

Однако, если это приложение Wine работает только под Xvfb, вы также можете использовать winetricks,

Другие вопросы по тегам