selenium中键盘模拟操作

对于键盘的模拟操作,也是使用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);  //释放按键

Selenium WebDriver 中,可借助 Actions 类和 Keys 枚举来模拟键盘按键操作,同时结合 Java 本身的 Robot、KeyEvent 等类,基本能满足工作中对鼠标键盘操作的需求[^1]。 以下是一个示例代码,展示了如何使用 Selenium 模拟键盘按键操作: ```java package com.gloryroad.Demo; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Action; import org.openqa.selenium.interactions.Actions; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class clisckSene { String url="http://www.sogou.com"; public WebDriver driver; @BeforeMethod public void setUp(){ driver=new FirefoxDriver(); driver.get(url); } @AfterMethod public void tearDown(){ driver.close(); } @Test public void clickSend() throws InterruptedException{ Actions act=new Actions(driver); act.sendKeys(Keys.CONTROL); act.sendKeys(Keys.SHIFT); act.sendKeys(Keys.ALT); act.sendKeys(Keys.CONTROL); act.sendKeys(Keys.SHIFT); act.sendKeys(Keys.ALT); act.keyDown(Keys.SHIFT).sendKeys("adfba").perform(); Thread.sleep(5000); } } ``` 在这段代码里,先创建了一个 Actions 对象,接着运用 `sendKeys` 方法发送不同的按键,像 `Keys.CONTROL`、`Keys.SHIFT`、`Keys.ALT` 等,还使用 `keyDown` 方法按下 SHIFT 键并发送字符串 "adfba",最后调用 `perform` 方法执行这些操作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值