Selenium selenium 中键盘模拟操作

Sorin · 2018年04月07日 · 最后由 Geguangfu 回复于 2020年03月24日 · 3154 次阅读

对于键盘的模拟操作,也是使用 Actions 类,使用类中的 keyUp(Key)、keyDown(Key)、sendKeys(key) 等方法来实现。键盘的操作有普通键盘和修饰键盘两种 :

1、普通键盘模拟

对于普通键盘,使用 sendKeys(key) 就可以实现,比如数字键、tab、空格等。

Actions action = new Actions(driver);

action.sendKeys(Keys.TAB). sendKeys(keys.NULL);  //模拟按下TAB 键

action.sendKeys(Keys.SPACE). sendKeys(keys.NULL);  //模拟按下空格键

Actions中的sendKeys(key)对于按键的调用并不会释放应该再调用 sendKeys(keys.NULL) 来释放按键

2、修饰键

对于修饰键,使用 KeyDown(Key)、keyUp(Key) 来实现,一般都是跟普通键组合使用的。比如 Alt+F4、Ctrl+Alt+a 等等。

Actions action = new Actions(driver);

action.keyDown(Keys.CONTROL);  //按下 Ctrl 键

action.keyUp(Keys.CONTROL);  //释放 Ctrl 键

使用快捷键 Ctrl+Alt+a,可以通过下面语句来实现:

action.keyDown(Keys.CONTROL).keyDown(Keys.ALT).sendKeys(a).keyUp(Keys.CONTROL).keyUp(Keys.ALT).perform();

对于 keyDown(Key) 方法的调用,如果没有接着调用 keyUp(Key) 或者 sendKeys(Keys.NULL) 来释放的话,这个按键将也一样保持按住状态,KeyDown(Key)、KeyUp(Keys) 方法的参数只能传修饰键, 否者将抛出 IllegalArgumentException 异常。

3、特殊按键操作

在 WebDriver 中,还有一些不常用到的功能键如 PrtSc、ScrLk/NmLk。而对于一些功能组合键,如 Alt+PrtSC 来抓取当前屏幕,通过 WebDriver 的 Keys 是没办法操作的。这个时候我们就需要用到 Java 的 Robot 类来实现对这类组合键的操作了。

Robot robot = new Robot();

robot.keyPress(java.awt.event.KeyEvent.VK_ALT);  //模拟按下ALT键

robot.keyPress(java.awt.event.KeyEvent.VK_PRINTSCREEN);  //模拟按下PrtSC键

robot.keyRelease(java.awt.event.KeyEvent.VK_ALT);  //释放按键
共收到 1 条回复 时间 点赞

您好,想问下这个模拟键盘的代码有版本要求的吗?
我用 java + selenium3 + chrome75+ 执行上面代码都不生效的。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册