如何在 Linux 上的 X Window System 中找到一个窗口并将其置于最前面?
Posted
技术标签:
【中文标题】如何在 Linux 上的 X Window System 中找到一个窗口并将其置于最前面?【英文标题】:How to find a window in X Window System on Linux and bring it to front? 【发布时间】:2015-07-15 00:49:32 【问题描述】:我在 Windows 上使用 Java 机器人和 User32 本机库对 Swing GUI 进行了一系列自动化用户测试。使用User32.INSTANCE.EnumWindows
之类的方法,我可以找到一个具有特定标题的窗口,将其放在前面,然后使用击键来执行操作。我正在寻找的窗口是其他 Swing 应用程序(在单独的 JVM 中运行)、PDF 查看器或浏览器。我无法控制这些窗口。
有没有办法在 Linux 上做到这一点?
我的设置(如果有帮助可以更改,无论如何都会使用虚拟机):
Ubuntu 14.04 tightvnc 服务器与 xvnc IceWM 窗口管理器注意:我在无头服务器上运行这些测试。
所需操作:
查找命名窗口(按标题,以确认已打开某些内容) 将命名窗口置于前面并聚焦于它(以执行击键)【问题讨论】:
您可以查看XTest
扩展以及wmctrl
和xdotool
等工具。
【参考方案1】:
按照 Etan 的建议,我已经安装了 wmctrl:
sudo apt-get install wmctrl
然后从 Java 中调用它。查找命名窗口:
wmctrl -l <title>
为了获得焦点:
wmctrl -a <title>
即使使用部分标题也能正常工作,因此我可以轻松替换为 User32
原生库编写的测试。
【讨论】:
以上是关于如何在 Linux 上的 X Window System 中找到一个窗口并将其置于最前面?的主要内容,如果未能解决你的问题,请参考以下文章