使用 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

相关内容