如何在 Linux 上的 X Window 系统中找到 window 并将其置于最前面?
How to find a window in X Window System on Linux and bring it to front?
我在 Windows 上使用 Java 机器人和 User32 本机库对 Swing GUI 进行了一系列自动化用户测试。使用 User32.INSTANCE.EnumWindows
之类的方法,我可以找到具有特定标题的 window,将其置于最前面,然后使用 key-strokes 执行操作。我正在寻找的 windows 是其他 Swing 应用程序(运行 在单独的 JVM 中)、PDF 查看器或浏览器。我无法控制那些 windows.
有没有办法在 Linux 上做到这一点?
我的设置(如果有帮助可以更改,无论如何都会使用虚拟机):
- Ubuntu 14.04
- 带 xvnc 的 tightvnc 服务器
- IceWM window 管理器
注意:我运行这些测试是在无头服务器上进行的。
所需操作:
- 找到一个名为 window(按标题,以确认已打开的内容)
- 将一个名为 window 的名字放在前面并关注它(以执行击键)
按照Etan的建议,我安装了wmctrl:
sudo apt-get install wmctrl
然后从Java调用它。用于查找命名的 window:
wmctrl -l <title>
获得焦点:
wmctrl -a <title>
即使使用部分标题也能正常工作,因此我可以轻松替换为 User32
本机库编写的测试。
我在 Windows 上使用 Java 机器人和 User32 本机库对 Swing GUI 进行了一系列自动化用户测试。使用 User32.INSTANCE.EnumWindows
之类的方法,我可以找到具有特定标题的 window,将其置于最前面,然后使用 key-strokes 执行操作。我正在寻找的 windows 是其他 Swing 应用程序(运行 在单独的 JVM 中)、PDF 查看器或浏览器。我无法控制那些 windows.
有没有办法在 Linux 上做到这一点?
我的设置(如果有帮助可以更改,无论如何都会使用虚拟机):
- Ubuntu 14.04
- 带 xvnc 的 tightvnc 服务器
- IceWM window 管理器
注意:我运行这些测试是在无头服务器上进行的。
所需操作:
- 找到一个名为 window(按标题,以确认已打开的内容)
- 将一个名为 window 的名字放在前面并关注它(以执行击键)
按照Etan的建议,我安装了wmctrl:
sudo apt-get install wmctrl
然后从Java调用它。用于查找命名的 window:
wmctrl -l <title>
获得焦点:
wmctrl -a <title>
即使使用部分标题也能正常工作,因此我可以轻松替换为 User32
本机库编写的测试。