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);  //释放按键

### Java Selenium 模拟键盘操作 在自动化测试中,模拟键盘操作是一项常见的需求。通过 `Selenium WebDriver` 和 `Keys` 类可以轻松实现这一功能。 #### 使用 sendKeys 方法发送文本 当目标是向网页元素输入字符串时,可以直接调用 `sendKeys()` 方法传递字符序列作为参数[^2]: ```java // 定位到搜索框并输入查询词百度一下 driver.get("https://www.baidu.com"); WebElement inputBox = driver.findElement(By.name("wd")); inputBox.sendKeys("Selenium 测试"); ``` #### 结合 Keys 枚举常量执行组合键动作 为了触发特殊按键(比如回车、删除等),应该引入 `org.openqa.selenium.Keys` 来辅助完成更复杂的交互逻辑: ```java import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; public class KeyBoardOperationExample { public static void main(String[] args){ // 初始化浏览器驱动实例... WebElement searchField = driver.findElement(By.id("searchInput")); // 输入关键词后按Enter提交表单 searchField.sendKeys("webdriver", Keys.RETURN); // 或者单独按下某个功能键 searchField.sendKeys(Keys.CONTROL, "a"); // 全选 // 清除当前选定的内容 searchField.sendKeys(Keys.DELETE); } } ``` 上述例子展示了如何利用 `Keys` 对象表示各种标准及修饰符类型的按键,并将其附加于常规字符串之后一并发往指定控件上[^3]。 #### 执行一系列连续的按键行为 如果需要描述多步连贯的操作流程,则可通过构建包含多个指令的动作链来达成目的: ```java Actions builder = new Actions(driver); builder.keyDown(inputElement, Keys.SHIFT).perform(); // 按下Shift不释放 inputElement.sendKeys("HELLO WORLD!"); // 大写打字 builder.keyUp(inputElement, Keys.SHIFT).perform(); // 抬起Shift键 ``` 这里借助了 `Actions` API 提供的功能,允许编程人员定义更加精细的行为模式,从而更好地模仿真实用户的活动方式[^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值