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

 更新时间:2023年01月06日 15:21:00   作者:洛阳泰山  
这篇文章主要为大家介绍了如何使用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.F1F1键
Keys.SPACE空格
Keys.TABTab键
Keys.ESCAPEESC键
Keys.ALTAlt键
Keys.SHIFTShift键
Keys.ARROW_DOWN向下箭头
Keys.ARROW_LEFT向左箭头
Keys.ARROW_RIGHT向右箭头
Keys.ARROW_UP向上箭头
Keys.BACK_SPACEBackspace建

组合键使用

        //组合键
        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线程编程中的volatile关键字的作用

    详解Java线程编程中的volatile关键字的作用

    这篇文章主要介绍了Java线程编程中的volatile关键字的作用,针对其禁止进行指令重排序和读写内存方面着重讲解,需要的朋友可以参考下
    2015-12-12
  • Spring Boot实战之发送邮件示例代码

    Spring Boot实战之发送邮件示例代码

    本篇文章主要介绍了Spring Boot实战之发送邮件示例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2017-03-03
  • java中equals和等号(==)的区别浅谈

    java中equals和等号(==)的区别浅谈

    java中equals和等号(==)的区别浅谈,需要的朋友可以参考一下
    2013-05-05
  • Java文件IO操作教程之DirectIO的意义

    Java文件IO操作教程之DirectIO的意义

    这篇文章主要给大家介绍了关于Java文件IO操作教程之DirectIO的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Java分形绘制山脉模型

    Java分形绘制山脉模型

    这篇文章主要为大家详细介绍了Java分形绘制山脉模型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • spring cloud gateway网关路由分配代码实例解析

    spring cloud gateway网关路由分配代码实例解析

    这篇文章主要介绍了spring cloud gateway网关路由分配代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Java实现ArrayList自动扩容

    Java实现ArrayList自动扩容

    ArrayList的扩容规则是非常简单的,它会根据需要自动扩容,本文就来介绍一下Java实现ArrayList自动扩容,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 使用JVM常用GC日志打印参数

    使用JVM常用GC日志打印参数

    这篇文章主要介绍了使用JVM常用GC日志打印参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring @Scheduler使用cron表达式时的执行问题详解

    Spring @Scheduler使用cron表达式时的执行问题详解

    Spring给程序猿们带来了许多便利。下面这篇文章主要给大家介绍了关于Spring @Scheduler使用cron表达式时的执行问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Java源码跟踪阅读技巧【值得收藏】

    Java源码跟踪阅读技巧【值得收藏】

    今天跟大家分享一下我平时阅读源码的几个小技巧,对于阅读Java中间件如Spring、Dubbo等框架源码的同学有一定帮助。本文基于Eclipse IDE,感兴趣的朋友跟随小编一起看看吧
    2018-11-11

最新评论