【问题标题】:How to find a window in X Window System on Linux and bring it to front?如何在 Linux 上的 X Window System 中找到一个窗口并将其置于最前面?
【发布时间】: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 等工具。

标签: java linux automated-tests window-managers xserver


【解决方案1】:

按照 Etan 的建议,我已经安装了 wmctrl:

sudo apt-get install wmctrl

然后从 Java 中调用它。查找命名窗口:

wmctrl -l <title>

为了获得焦点:

wmctrl -a <title>

即使使用部分标题也能正常工作,因此我可以轻松替换为 User32 原生库编写的测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多