Selenium自动操作鼠标的方法及示例(鼠标左右键单击、左键双击、拖动等)

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 1. 鼠标右键单击`contextClick`
  • 2. 鼠标左键点击并控制`clickAndHold`
  • 3. 释放鼠标`release`
  • 4. 鼠标左键单机`click`
  • 5. 鼠标左键双击`doubleClick`
  • 6. 鼠标左键拖动`dragAndDrop`
  • 7. 完整代码


执行程序前请先配置驱动:
关于Java selenium使用前浏览器驱动的下载和环境变量的配置
关于Selenium自动化测试工具的Java实现详情请参考文章:
如何查看页面对应的Selenium定位参数
Java实现 selenium Web自动化测试(简单篇)
Java实现 selenium Web自动化测试(详细篇)


以下内容均已百度网页为地址进行元素定位和操作
可以参考最后一小节的完整代码执行以下方法进行测试

1. 鼠标右键单击contextClick

模拟鼠标右键单击呼出菜单栏的操作

        //创建Actions对象存储行为
        Actions actions = new Actions(webDriver);
        //contextClick-右击
        actions.contextClick(kw).perform();

在main方法执行后的结果如下
在这里插入图片描述

2. 鼠标左键点击并控制clickAndHold

模拟鼠标左键点击并控制,就是按住不动,以下为百度首页鼠标左键按住新闻链接不动的操作
注意这里必须是以百度首页定位元素,前面的搜索七夕的代码需要注释掉

        //创建Actions对象存储行为
        Actions actions = new Actions(webDriver);
        //clickAndHold-鼠标点击并控制,控制的意思就是鼠标一直点着这个新闻不放开,可以看到浏览器中新闻变蓝色
        //注意,这里必须实在百度首页,也就是需要把上面的搜索`七夕`提交代码注释掉
        WebElement news = webDriver.findElement(By.linkText("新闻"));
        actions.clickAndHold(news).perform();

操作截图,新闻链接变色表示鼠标一直在按着
在这里插入图片描述

3. 释放鼠标release

通过release方法释放鼠标

        //创建Actions对象存储行为
        Actions actions = new Actions(webDriver);
        //release-释放鼠标,因为上面一直按着鼠标没放,这里放开鼠标,然后就会跳转到新闻页面
        actions.release().perform();

前面我们使用clickAndHold方法单机并控制鼠标,就是按住链接不动,现在释放鼠标就会相当于click点击了链接

4. 鼠标左键单机click

点击按钮或者链接可通过click进行跳转,如下定位到百度首页新闻文本链接,并左键单机跳转

        //创建Actions对象存储行为
        Actions actions = new Actions(webDriver);
        //定位
        WebElement news = webDriver.findElement(By.linkText("新闻"));
        //click-单击
        actions.click(news).perform();

5. 鼠标左键双击doubleClick

鼠标左键双击的操作使用doubleClick,如下定位到百度输入框输入七夕并双击

        //定位
        WebElement kw = webDriver.findElement(By.id("kw"));
        kw.sendKeys("七夕");
        Thread.sleep(3000);
        //创建Actions对象存储行为
        Actions actions = new Actions(webDriver);
        //doubleClick-双击
        actions.doubleClick(kw).perform();

如图双击后输入框中的七夕被选中
在这里插入图片描述

6. 鼠标左键拖动dragAndDrop

如果想将某部分内容拖动到别的位置,可通过dragAndDrop方法操作
如下将百度首页搜索七夕后页面的地图链接拖动到搜索框

        //定位
        WebElement kw = webDriver.findElement(By.id("kw"));
        kw.sendKeys("七夕");
        kw.submit();

        Thread.sleep(3000);

        //创建Actions对象存储行为
        Actions actions = new Actions(webDriver);
        //dragAndDrop-拖动 将A元素内容拖动到B元素位置
        //需要拖动的元素定位,s
        WebElement s = webDriver.findElement(By.linkText("地图"));
        //目标位置的元素定位,t
        WebElement t = webDriver.findElement(By.id("kw"));
        //将s链接拖动到输入框t的位置
        actions.dragAndDrop(s, t).perform();

执行后会将地图的链接地址拖动到输入框中,如下
在这里插入图片描述

7. 完整代码

MouseControlTest.java

package com.libai.test.selenium.chrome;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.interactions.Actions;

/**
 * @ClassDescription: 模拟鼠标操作
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/5/8 15:27
 */
public class MouseControlTest {
    public static void main(String[] args) throws InterruptedException {
        //指定驱动,第一个参数为驱动名称,不同浏览器的参数名称不一样,请根据浏览器查询到对应的浏览器参数名,第二个参数为驱动文件路径,即驱动完整文件路径
        System.setProperty("webdriver.chrome.driver", "D:\\JavaSoftWares\\Google\\driver\\chromedriver-win64\\chromedriver.exe");
        // 谷歌驱动
        ChromeOptions cops = new ChromeOptions();
        // 允许所有请求
        cops.addArguments("--remote-allow-origins=*");
        //默认设置开始打开网页时窗口最大化
        cops.addArguments("--start-maximized");
        //创建驱动对象
        WebDriver webDriver = new ChromeDriver(cops);
        // 启动需要打开的网页
        webDriver.get("https://www.baidu.com");
        //指定窗口大小--最大化
//        webDriver.manage().window().maximize();

        //定位
        WebElement kw = webDriver.findElement(By.id("kw"));
        kw.sendKeys("七夕");
        kw.submit();

        Thread.sleep(3000);

        //创建Actions对象存储行为
        Actions actions = new Actions(webDriver);

        //鼠标操作的模拟
        //contextClick-右击
//        actions.contextClick(kw).perform();

//        Thread.sleep(3000);

        //clickAndHold-鼠标点击并控制,控制的意思就是鼠标一直点着这个新闻不放开,可以看到浏览器中新闻变蓝色
        //注意,这里必须实在百度首页,也就是需要把上面的搜索`七夕`提交代码注释掉
//        WebElement news = webDriver.findElement(By.linkText("新闻"));
//        actions.clickAndHold(news).perform();

//        Thread.sleep(3000);

        //release-释放鼠标,因为上面一直按着鼠标没放,这里放开鼠标,然后就会跳转到新闻页面
//        actions.release().perform();

        //click-单击
//        actions.click(news).perform();
//        actions.click(webDriver.findElement(By.linkText("地图"))).perform();

        //doubleClick-双击
//        actions.doubleClick(kw).perform();

        //        Thread.sleep(3000);


        //release-释放鼠标
//        actions.release().perform();

        //dragAndDrop-拖动 将A元素内容拖动到B元素位置
        //需要拖动的元素定位,s
        WebElement s = webDriver.findElement(By.linkText("地图"));
        //目标位置的元素定位,t
        WebElement t = webDriver.findElement(By.id("kw"));
        //将s链接拖动到输入框t的位置
        actions.dragAndDrop(s, t).perform();

        
        //perform-执行所有Actions中存储的行为

        Thread.sleep(3000);

        //关闭资源(关闭浏览器)关闭当前百度首页,新打开的其他网页不会关闭
//        webDriver.close();
        //关闭整个浏览器,所有网页窗口都会关闭
        webDriver.quit();
    }
}


感谢阅读,祝君暴富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/627308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【线性系统理论】笔记一

一:状态空间表达式 电路系统状态空间描述列写 1:选取状态变量 状态变量定义:线性无关极大组属性。 2:列出电路原始回路方程 ps:状态变量有两个,理论上需要列写2个方程 3:规范形势 4&#xf…

基于Springboot的知名作家信息管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的知名作家信息管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

计算思维的理解

2006年,卡内基梅隆大学周以真教授首次系统性地定义了计算思维。这一年,她在美国计算机权威期刊《Communications of the ACM》上发表了题为《Computational Thinking》的论文,由此开启了计算思维大众化的全新历程。 周以真(Jeanne…

3.3 整型

本节必须掌握的知识点: 整型数据类型的取值范围 示例八 代码分析 汇编解析 获取数据类型的取值范围 3.3.1 整型数据类型取值范围 整型是用来表示限定范围内连续整数的数据类型。表3-1列出了C语言编译器定义的整型数据类型及其大小和取值范围。 类型 存储大小…

三菱FX3U-4AD模拟量电压输入采集实例

硬件:PLC模块 FX3GA-24MT ;A/D模块FX&#xff13…

食品饮料厂做配送小程序的作用是什么

食品饮料厂品牌旗下通常有多个产品类型,多数是以批发为主,也有直营店及线上直播零售等方式,商家如何将品牌宣传和产品销售的更广是需要思考的,其销售模式也多种多样。 私域店铺也是品牌增长的重要方式,在【雨科】平台…

【现代C++】范围库的应用

C20引入了范围库(Ranges library),它是标准模板库(STL)的一个扩展,提供了一种新的方式来处理序列和范围。这个库允许开发者以更声明式的方式编写代码,使得操作序列变得更简洁、更易读。以下是C范…

深入理解 npm、cnpm、npx、yarn 和 pnpm:JavaScript 包管理器的对比

在 JavaScript 的世界中,包管理器是一个重要的工具,它帮助我们管理、安装和升级项目的依赖。在这篇文章中,我们将深入探讨三个最流行的 JavaScript 包管理器:npm、yarn 和 pnpm。 npm(Node Package Manager&#xff0…

电源模块效率的正确测试方法

电源效率是评价电源性能的重要指标,它直接关系到设备的稳定性和能源的利用效率。因此,对电源进行效率测试显得尤为重要。电源在工作过程中,会有部分能量损耗,因此,电源效率的高低,不仅影响着设备的性能&…

VMware虚拟机没有网,无法设置网络为桥接状态

今天需要使用Ubuntu18但现有虚拟机是Ubuntu20,由于硬盘空间不够大,所以删除了原来的虚拟机并重新搭建Ubuntu18的环境,然后发现虚拟机没有网络,而我之前的虚拟机这一切都是正常的。 在网络设置里勾选的是桥接模式但无法联网&#x…

奥维地图下载高清影像的两种方式!以及ArcGIS、QGIS、GlobalMapper、自编工具下载高清影像的方法推荐!

今天来介绍一下奥维互动地图是如何下载高清影像的,也不是多了不起的功能!有朋友问,加上这个软件确实用的人多。 下载的高清数据在ArcGIS中打开的效果! 开始介绍奥维之前我们也介绍一下我们之前介绍的几个方法,没有优劣…

面试加分项:精通Java高并发下的锁优化策略

1. 问题背景与挑战 1.1 并发编程中的挑战 在现代软件开发中,高并发已成为衡量系统质量的一项关键因素,特别是对于那些需要同时处理数以万计甚至百万级用户请求的服务。并发编程的挑战在于如何有效地同步多个线程,确保数据的一致性和系统的稳…

【csv-parse】使用parse方法的时候来转换为csv字符串时,会导致输出有乱码

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:前端bug记录 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进…

针对实拍场景的虚拟试衣模型IDM-VTON:高保真和细节保留的虚拟试穿算法,真实环境效果领先

前言 虚拟试衣是一种将人物图像与服装图像合成,生成人物穿戴目标服装的图像技术。相比传统的GAN方法,基于扩散模型的虚拟试衣方法能够生成更加自然逼真的图像。然而,现有的扩散模型在保留服装细节方面仍存在局限性。 为了解决这一问题&…

Nodejs 第七十一章(libuv)

libuv 在Node.js中,libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的,它利用libuv来处理底层的异步操作,如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色: 事件循环&a…

一个panic问题引起对percpu变量的思考

1 问题引入 最近在分析一个panic问题时&#xff0c;发现panic现场无法与log对应起来。 先贴log: <1>[ 180.089084] Unable to handle kernel NULL pointer dereference at virtual address 00000001 <1>[ 180.099551] pgd 8bbde651 <1>[ 180.107775] …

JavaScript进阶——05-迭代器和生成器【万字长文,感谢支持】

迭代器 概念 迭代器&#xff08;Iterator&#xff09;是 JavaScript 中一种特殊的对象&#xff0c;它提供了一种统一的、通用的方式遍历个各种不同类型的数据结构。可以遍历的数据结构包括&#xff1a;数组、字符串、Set、Map 等可迭代对象。我们也可以自定义实现迭代器&…

Python GUI开发- Qt Designer环境搭建

前言 Qt Designer是PyQt5 程序UI界面的实现工具&#xff0c;使用 Qt Designer 可以拖拽、点击完成GUI界面设计&#xff0c;并且设计完成的 .ui 程序可以转换成 .py 文件供 python 程序调用 环境准备 使用pip安装 pip install pyqt5-toolsQt Designer 环境搭建 在pip安装包…

AI办公自动化:用kimi批量把word转换成txt文本

在Kimichat中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个Python脚本编写的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;F:\aword 读取里面docx格式的word文档&#xff0c; 提取word文档中的第一行文字作为txt文本文档的标题…

(done) NLP+HMM 协作,还有维特比算法

参考视频&#xff1a;https://www.bilibili.com/video/BV1aP4y147gA/?p2&spm_id_frompageDriver&vd_source7a1a0bc74158c6993c7355c5490fc600 &#xff08;这实际上是 “序列标注任务”&#xff09; HMM 的训练和预测如下图 训练过程&#xff1a;我们首先先给出一个语…