详解Java Selenium中的键盘控制操作

简介

本文主要简介如何使用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);
    }

到此这篇关于详解Java Selenium中的键盘控制操作的文章就介绍到这了,更多相关Java Selenium键盘内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(详解Java Selenium中的键盘控制操作)