![使用 xvfb 自动化 X 程序](https://linux22.com/image/82651/%E4%BD%BF%E7%94%A8%20xvfb%20%E8%87%AA%E5%8A%A8%E5%8C%96%20X%20%E7%A8%8B%E5%BA%8F.png)
我最初发布了这个问题这里,但转念一想,我决定这里是一个更好的地方。
遗憾的是,我不得不使用这个捆绑相机驱动程序的专有程序。我想用它执行特定的操作,其中涉及单击几个按钮。并且没有 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
。