xvfbを使用してXプログラムを自動化する

xvfbを使用してXプログラムを自動化する

残念ながら、カメラ ドライバーをバンドルしたこの専用プログラムを使用する必要があります。このプログラムを使用して、いくつかのボタンをクリックする特定のアクションを実行したいのですが、CLI がありません。

では、これを自動化する最も簡単な方法は何でしょうか? xvfb を使用して、擬似 X 環境でプログラムを開くことを考えましたが、その場合、入力操作を実行するにはどうすればよいのでしょうか? (x, y) のピクセルをクリックすることもできますが、ボタンやメニュー項目を参照できればさらに便利です。

もっと簡単な方法があれば教えてください。xvfb が正しい方法かどうかはわかりません。自分が実現しようとしていることの実際の名前すら知らないので、検索するのは非常に困難です...

答え1

使用xdotoolキーボード/マウス入力、ウィンドウ管理などを偽装できます。

使用例install_mt4-xdot.shWine で Windows アプリをインストールするスクリプト:

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

関連情報