繁体   English   中英

Selenium Webdriver在使用Java的Robot类时冻结

[英]Selenium Webdriver freezes up while using Java's Robot class

我正在进行一项自动测试,该测试需要在Internet Explorer中打开一个文档。 脚本工作正常,直到单击了指向文档的链接之后,这将启动如下所示的讨厌的IE弹出窗口

在此处输入图片说明

由于无法使用Webdriver专注于窗口,因此我尝试使用Robot.java发送键“ Alt + O”,该键可以手动正常运行,但是在执行时会死锁。 我的假设是与Selenium / Robot.java有一些不兼容,但由于陷入僵局而无法生成任何日志,因此我对此感到困惑。 请不要建议使用AutoIT,因为出于某些愚蠢的原因,我的安全分析师不会允许我使用它。 任何帮助深表感谢。

工具:

  1. 硒服务器独立2.41.0
  2. IEDriverServer(32位版本)
  3. Internet Explorer版本= 9
  4. 脚本是用Java编写的

MyRobot.java

public class MyRobot {

private static Robot robot;

public static void sendVirtualKeyCombination(int... keyEvents) {

    try {

        robot = new Robot();
        robot.setAutoDelay(1000);

        // Press key combination
        for (int keyEvent : keyEvents) {
            System.out.println("Pressing " + KeyEvent.getKeyText(keyEvent));
            robot.keyPress(keyEvent);
        }

    } catch (AWTException e) {
        e.printStackTrace();
    } finally {

        // Release all keys
        for (int keyEvent : keyEvents) {
            System.out.println("Releasing " + KeyEvent.getKeyText(keyEvent));
            robot.keyRelease(keyEvent);
        }
    }

}
}

MyRobot调用

MyRobot.sendVirtualKeyCombination(KeyEvent.VK_Alt, KeyEvent.VK_O);

按下按键后半秒钟尝试释放按键。 该错误可能是由于按下和释放键之间的延迟很小。

// Press key combination
for (int keyEvent : keyEvents) {
    System.out.println("Pressing " + KeyEvent.getKeyText(keyEvent));
    robot.keyPress(keyEvent);
    }

    thread.sleep(500)

for (int keyEvent : keyEvents) {
    System.out.println("Releasing " + KeyEvent.getKeyText(keyEvent));
    robot.keyRelease(keyEvent);
    }

我在Firefox中遇到了同样的问题。 尝试使用线程。 启动两个线程,第一个用于打开弹出按钮。 现在事情冻结了。 现在,在第二个线程中稍等片刻,然后执行发送密钥。

希望这行得通。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM