【问题标题】:Java awt.Robot not working inside a virtual machine?Java awt.Robot 不在虚拟机中工作?
【发布时间】:2014-03-18 16:46:57
【问题描述】:

我正在尝试使用 java.awt.Robot 类在虚拟机中进行测试。如果我在我的主机中测试它,一切都会按预期工作,但是当我在虚拟机中运行相同的程序时,什么都没有发生,也没有错误/异常。我曾尝试在不同计算机上运行 Windows XP 或 Windows 7 的虚拟机内部,但从未成功。

我在机器上测试的代码非常简单:

try 
{
    final Robot robot = new Robot();
    robot.mouseMove(500, 500);
} 
catch (AWTException e) 
{
    e.printStackTrace();
}

当我运行它时,程序刚刚结束,鼠标不动。机器人类不在虚拟机中工作吗?如果没有,是否有另一种方法来模拟鼠标移动/点击?你有没有试过在虚拟机中使用这个类,如果成功了,你的设置是什么?

【问题讨论】:

  • 鉴于您安装了正确的 java 等,VM 中没有什么不同。VM 本质上不知道它是一个 VM(通常,至少对于大多数 Windows VM 不知道它是 VM 的版本)。大多数 Windows 虚拟机都在 HVM 模式下运行,这意味着他们认为自己在裸机上运行。所以,我敢打赌,你的设置中还有其他问题。
  • @Leo OP 不应该需要这样的东西来让它工作。很明显他的虚拟机设置不正确。这或多或少是一个可能应该在 SuperUser 或 ServerFault 上的问题。 Java 和 AWT 本质上将在任何系统上运行大致相同,只要 Java 设置正确。对于 VM,OP 需要确保他正确安装了 vm 的工具/驱动程序,并且屏幕分辨率大于他试图将鼠标移入的 500x500。
  • 感谢您的cmets,经过更多测试,我终于找到了问题所在。该程序实际上在 VM 中运行,我们只是看不到鼠标光标移动。 (如果我将鼠标移动到按钮的坐标然后模拟鼠标按下,我们可以看到按钮被按下但光标停留在其原始位置。)

标签: java virtual-machine awtrobot


【解决方案1】:

IT 无法工作...我们遇到了类似的问题...当您在笔记本电脑/台式机上打开虚拟机时,您的测试脚本将通过。

试试这个...开始您的测试并关闭 VNC/RDC,然后再检查您的结果,它会(失败)。

原因是......这个机器人类正在寻找物理键盘,但是当我们在 CI 上运行测试套件时,我们没有物理键盘......

所以它不会工作。

替代解决方案:使用 Selenium 方法

【讨论】:

    【解决方案2】:

    也许它不起作用,因为您已经在您的机器中安装了 Guest Additions。我正在使用 VirtualBox,当我卸载了我的 Guest Additions 程序(在虚拟机控制面板内)时,问题得到了解决,我的鼠标可以像在主机上所做的测试一样移动。我希望它对你有帮助。它对我有用。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,很容易解决。转到虚拟机的输入设置并禁用鼠标集成。这会将您的指针更改为虚拟机内部的指针。机器人鼠标功能应该会再次工作,但鼠标可能会有一点输入延迟,因为您的真实鼠标会将信号传递到 VM。

      【讨论】:

        猜你喜欢
        • 2014-07-04
        • 2013-04-10
        • 2021-10-02
        • 2011-08-19
        • 2017-07-05
        • 2016-11-07
        • 2018-05-09
        相关资源
        最近更新 更多