详解Java Selenium中的键盘控制操作
洛阳泰山 人气:0简介
本文主要简介如何使用java代码利用Selenium 控制浏览器中需要用到的键盘操作。
键盘控制
webdriver 中 Keys 类几乎提供了键盘上的所有按键方法,我们可以使用 send_keys + Keys 实现输出键盘上的组合按键如 “Ctrl + C”、“Ctrl + V” 等。
import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * @author Lenovo */ public class SeleniumDemo { private final static String webDriver = "webdriver.chrome.driver"; private final static String webDriverPath ="E:\\chromedriver\\chromedriver.exe"; public static void main(String[] args) throws InterruptedException { System.setProperty(webDriver, webDriverPath); WebDriver driver= new ChromeDriver(); //有道翻译页面 driver.get("https://fanyi.youdao.com/index.html#/"); WebElement element=driver.findElement(By.id("js_fanyi_input")); //输入账户名 element.sendKeys("admin"); // 模拟回车键进行跳转(输入内容后) element.sendKeys(Keys.ENTER); //Ctrl + A 全选输入框中内容 element.sendKeys(Keys.CONTROL, "A"); //Ctrl + C 复制输入框中内容 element.sendKeys(Keys.CONTROL, "C"); //Ctrl + V 粘贴输入框中内容(第一粘贴会把原来的内容替换) element.sendKeys(Keys.CONTROL, "V"); //Ctrl + V 粘贴输入框中内容 element.sendKeys(Keys.CONTROL, "V"); //Ctrl + V 粘贴输入框中内容 element.sendKeys(Keys.CONTROL, "V"); } }
其他常见键盘操作:
操作 | 描述 |
---|---|
Keys.F1 | F1键 |
Keys.SPACE | 空格 |
Keys.TAB | Tab键 |
Keys.ESCAPE | ESC键 |
Keys.ALT | Alt键 |
Keys.SHIFT | Shift键 |
Keys.ARROW_DOWN | 向下箭头 |
Keys.ARROW_LEFT | 向左箭头 |
Keys.ARROW_RIGHT | 向右箭头 |
Keys.ARROW_UP | 向上箭头 |
Keys.BACK_SPACE | Backspace建 |
组合键使用
//组合键 element.sendKeys(Keys.CONTROL,Keys.SHIFT, "A");
高频使用
//输入文本 element.sendKeys("洛阳泰山");
补充知识
键盘操作除了使用Selenium 控制键盘外还可以使用 java robot (java.awt包下)的控制键盘结合使用。
使用示例
通过 Robot 类实现发送键盘组合键
/* 发送键盘组合键,模拟"全选 Ctrl+A ->复制 Ctrl+C ->粘贴 Ctrl+V"快捷键功能 * 第 2 种方法: 通过 Robot 类实现 * */ @Parameters("baseUrl1") @Test public void RobotCtrlACV(String baseUrl1) throws InterruptedException, AWTException { driver.get(baseUrl1 + "/"); WebElement inputBox = driver.findElement(By.xpath("//*[@id=\"query\"]")); inputBox.clear(); inputBox.sendKeys("搜狗"); Thread.sleep(2000); // 定义一个 Robot 对象 Robot robot = new Robot(); // 模拟 全选 Ctrl+A robot.keyPress(KeyEvent.VK_CONTROL); // 按下 Ctrl 键 robot.keyPress(KeyEvent.VK_A); // 按下字母键,这里大小写均可 robot.keyRelease(KeyEvent.VK_A); // 释放字母键,这里大小写均可 robot.keyRelease(KeyEvent.VK_CONTROL); // 释放 Ctrl 键 // 模拟 复制 Ctrl+C robot.keyPress(KeyEvent.VK_CONTROL); // 按下 Ctrl 键 robot.keyPress(KeyEvent.VK_C); // 按下字母键,这里大小写均可 robot.keyRelease(KeyEvent.VK_C); // 释放字母键,这里大小写均可 robot.keyRelease(KeyEvent.VK_CONTROL); // 释放 Ctrl 键 Thread.sleep(2000); driver.navigate().to("http://www.baidu.com" + "/"); inputBox = driver.findElement(By.xpath("//*[@id=\"kw\"]")); inputBox.clear(); // 模拟 粘贴 Ctrl+V robot.keyPress(KeyEvent.VK_CONTROL); // 按下 Ctrl 键 robot.keyPress(KeyEvent.VK_V); // 按下字母键,这里大小写均可 robot.keyRelease(KeyEvent.VK_V); // 释放字母键,这里大小写均可 robot.keyRelease(KeyEvent.VK_CONTROL); // 释放 Ctrl 键 Thread.sleep(2000); }
当然也可以通过 Actions 类实现
/* 发送键盘组合键,模拟"全选 Ctrl+A ->复制 Ctrl+C ->粘贴 Ctrl+V"快捷键功能 * 第 1 种方法: 通过 Actions 类实现 * */ @Parameters("baseUrl1") @Test public void ActionsCtrlACV(String baseUrl1) throws InterruptedException, AWTException { driver.get(baseUrl1 + "/"); WebElement inputBox = driver.findElement(By.xpath("//*[@id=\"query\"]")); inputBox.clear(); inputBox.sendKeys("搜狗"); Thread.sleep(2000); // 定义一个 Actions 对象 Actions action = new Actions(driver); // 模拟 全选 Ctrl+A action.keyDown(Keys.CONTROL); // 按下 Ctrl 键 action.sendKeys(Keys.chord("A")); // 按下字母键,这里大小写均可 action.keyUp(Keys.CONTROL); // 释放 Ctrl 键 // 模拟 复制 Ctrl+C action.keyDown(Keys.CONTROL); // 按下 Ctrl 键 action.sendKeys(Keys.chord("c")); // 按下字母键,这里大小写均可 action.keyUp(Keys.CONTROL); // 释放 Ctrl 键 // 这一步,必不可少,作用是使得以上组合键生效 action.build().perform(); Thread.sleep(2000); driver.navigate().to("http://www.baidu.com" + "/"); inputBox = driver.findElement(By.xpath("//*[@id=\"kw\"]")); inputBox.clear(); // 模拟 粘贴 Ctrl+V action.keyDown(Keys.CONTROL); // 按下 Ctrl 键 action.sendKeys(Keys.chord("v")); // 按下字母键,这里大小写均可 action.keyUp(Keys.CONTROL); // 释放 Ctrl 键 // 这一步,必不可少,作用是使得以上组合键生效 action.build().perform(); Thread.sleep(2000); }
加载全部内容