[英]Selenium Webdriver freezes up while using Java's Robot class
我正在进行一项自动测试,该测试需要在Internet Explorer中打开一个文档。 脚本工作正常,直到单击了指向文档的链接之后,这将启动如下所示的讨厌的IE弹出窗口
由于无法使用Webdriver专注于窗口,因此我尝试使用Robot.java发送键“ Alt + O”,该键可以手动正常运行,但是在执行时会死锁。 我的假设是与Selenium / Robot.java有一些不兼容,但由于陷入僵局而无法生成任何日志,因此我对此感到困惑。 请不要建议使用AutoIT,因为出于某些愚蠢的原因,我的安全分析师不会允许我使用它。 任何帮助深表感谢。
工具:
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.