私はもともとこの質問を投稿しました ここ ですが、考え直して、ここがこれに適した場所であると判断しました。
悲しいことに、カメラドライバーをバンドルしたこの独自のプログラムを使用する必要があります。いくつかのボタンをクリックするなど、特定のアクションを実行したいと思います。そして、CLIはありません。
では、これを自動化する最も簡単な方法は何ですか? xvfbを使用して偽のX環境でプログラムを開くことを考えましたが、入力操作を実行するにはどうすればよいですか? (x、y)のクリックピクセルかもしれませんが、ボタンやメニュー項目を参照できればさらに便利です。
もっと簡単な方法があれば教えてください! xvfbが正しい方法かどうかはわかりません。自分がやろうとしていることの実際の名前すら知らないので、検索は非常に難しいです...
xdotool
を使用できます。これにより、キーボード/マウス入力、ウィンドウ管理などを偽造できます。
キャプチャ結果の画像を表示するには、example.sh
のxcalc "4*9="
スクリプトを参照してください。
#!/usr/bin/env bash
save="$DISPLAY" # save original X display number
export DISPLAY=:44 # set random choosen display for xvfb
case "$1" in # and x-programs called below
start) Xvfb $DISPLAY & ;; # starting xvfb server on :44
calc) xcalc & ;; # run x-calculator
xdo) xdotool mousemove 1 1 click 1 # focus with click on x:y=1:1
xdotool key 4 asterisk 9 # calc 4*9
xdotool key equal ;; # =
show) #capture root window ('36' result image) and display it to saved Xno
xwd -root | xwud -display $save & ;;
stop) ps auxww | grep "Xvfb $DISPLAY" | awk '{print $2}' | xargs kill ;;
all) DISPLAY=$save; $0 start; $0 calc; sleep 1; $0 xdo; $0 show; $0 stop ;;
esac
注:個々のオプションはテストに使用することも、すべて./example.sh all
で実行することもできます。