使用Java Robot发送按键事件,以便在Selenium WebDriver中从浏览器打印内容

使用Java Robot发送按键事件,以便在Selenium WebDriver中从浏览器打印内容,java,selenium-webdriver,awtrobot,Java,Selenium Webdriver,Awtrobot,我正在使用SeleniumWebDriver自动化web浏览器,但我有一个测试用例,需要在其中保存pdf。受到这两个问题所采用方法的启发 我用java Robot对象弹出“另存为”,按下control+s键: Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_S); robot.keyRelease(KeyEvent.VK_S); robot.keyRelease(

我正在使用SeleniumWebDriver自动化web浏览器,但我有一个测试用例,需要在其中保存pdf。受到这两个问题所采用方法的启发 我用java Robot对象弹出“另存为”,按下control+s键:

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_CONTROL);
这很有效;但是,当我尝试在“保存到”框中键入一个位置并按enter键并输入以下代码时:

robot.keyPress(KeyEvent.VK_P);
robot.keyRelease(KeyEvent.VK_P);
robot.keyPress(KeyEvent.VK_O);
robot.keyRelease(KeyEvent.VK_O);
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

它没有任何作用。为什么我不能在“保存到”框中键入POC并使用相同的技术按enter键(当它清晰地具有焦点时)?

发生的情况是,机器人移动得太快,无法进入浏览器。我添加了一些
robot.delay(x)
s,并稍微改变了按键和按键释放的调用。以下是工作代码:

Robot robot = new Robot();
robot.delay(3000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(1000);
robot.keyPress(KeyEvent.VK_P);
robot.keyPress(KeyEvent.VK_O);
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_P);
robot.keyRelease(KeyEvent.VK_O);
robot.keyRelease(KeyEvent.VK_C);
robot.delay(50);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);