![使用 xvfb 自动化 X 程序](https://linux22.com/image/1481775/%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
它可以伪造键盘/鼠标输入、窗口管理等等。
基于的示例用法install_mt4-xdot.sh
在 wine 下安装 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
。