xvfbを使用したXプログラムの自動化

xvfbを使用したXプログラムの自動化

もともとこの質問を投稿しました。ここでも、もう一度考えてみると、ここがより良いところだと判断しました。

残念ながら、カメラドライバをバンドルして提供する独自のプログラムを使用する必要がありました。いくつかのボタンをクリックすることに関連する特定のタスクを実行したいと思います。そしてCLIはありません。

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

もっと簡単な方法があれば教えてください! xvfbが正しいアプローチかどうかはわかりません。私がやろうとしていることの本当の名前さえ知らないので、検索は非常に難しいです...

答え1

あなたはそれを使用することができます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

関連情報