使用 Java 机器人发送按键事件以从 Selenium WebDriver 中的浏览器打印内容
Sending KeyPress Events with Java Robot to print something from browser in Selenium WebDriver
我正在使用 Selenium WebDriver 来自动化 Web 浏览器,但我有一个测试用例,我需要在其中保存 pdf。受到这两个问题所用方法的启发question 1
question 2 我让 "Save As" 弹出一个 java 机器人对象并按下 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);
效果很好;但是,当我尝试在保存到框中键入一个位置并使用以下代码按回车键时:
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 并在它明显具有焦点时使用相同的技术按回车键?
发生的事情是机器人移动速度对于浏览器来说太快了。我添加了一些 robot.delay(x)
s 并且稍微更改了 keyPress 和 keyRelease 调用。这是工作代码:
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);
我正在使用 Selenium WebDriver 来自动化 Web 浏览器,但我有一个测试用例,我需要在其中保存 pdf。受到这两个问题所用方法的启发question 1 question 2 我让 "Save As" 弹出一个 java 机器人对象并按下 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);
效果很好;但是,当我尝试在保存到框中键入一个位置并使用以下代码按回车键时:
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 并在它明显具有焦点时使用相同的技术按回车键?
发生的事情是机器人移动速度对于浏览器来说太快了。我添加了一些 robot.delay(x)
s 并且稍微更改了 keyPress 和 keyRelease 调用。这是工作代码:
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);