原作者:https://www.cnblogs.com/lingling99/p/5750266.html
鼠标点击操作 
鼠标点击事件有以下几种类型: 
清单 1. 鼠标左键点击 
Actions action = new Actions(driver);action.click();// 鼠标左键在当前停留的位置做单击操作  
action.click(driver.findElement(By.name(element)))// 鼠标左键点击指定的元素 
清单 2. 鼠标右键点击 
Actions action = new Actions(driver);  
action.contextClick();// 鼠标右键在当前停留的位置做单击操作  
action.contextClick(driver.findElement(By.name(element)))// 鼠标右键点击指定的元素 
清单 3. 鼠标双击操作 
Actions action = new Actions(driver);  
action.doubleClick();// 鼠标在当前停留的位置做双击操作  
var script = document.createElement('script'); 
script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);    
action.doubleClick(driver.findElement(By.name(element)))// 鼠标双击指定的元素 
清单 4. 鼠标拖拽动作 
Actions action = new Actions(driver);  
// 鼠标拖拽动作,将 source 元素拖放到 target 元素的位置。  action.dragAndDrop(source,target); 
// 鼠标拖拽动作,将 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 为横坐标,yOffset 为纵坐标。 
action.dragAndDrop(source,xOffset,yOffset); 
在这个拖拽的过程中,已经使用到了鼠标的组合动作,首先是鼠标点击并按住 
(click-and-hold) source 元素,然后执行鼠标移动动作 (mouse move),移动到 target 元素位置或者是 (xOffset, yOffset) 位置,再执行鼠标的释放动作 (mouse release)。所以上面的方法也可以拆分成以下的几个执行动作来完成: 
action.clickAndHold(source).moveToElement(target).perform();   action.release(); 
清单 5. 鼠标悬停操作 
Actions action = new Actions(driver);  
action.clickAndHold();// 鼠标悬停在当前位置,既点击并且不释放  action.clickAndHold(onElement);// 鼠标悬停在 onElement 元素的位置 
action.clickAndHold(onElement) 这个方法实际上是执行了两个动作,首先是鼠标移动到元素 onElement,然后再 clickAndHold, 所以这个方法也可以写成 action.moveToElement(onElement).clickAndHold()。 
清单 6. 鼠标移动操作 
Actions action = new Actions(driver);  
action.moveToElement(toElement);// 将鼠标移到 toElement 元素中点 // 将鼠标移到元素 toElement 的 (xOffset, yOffset) 位置, 
//这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。 
var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;
action.moveToElement(toElement,xOffset,yOffset) 
// 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴  action.moveByOffset(xOffset,yOffset); 
action.moveByOffset(xOffset,yOffset) 这里需要注意,如果 xOffset 为负数,表示横坐标向左移动,yOffset 为负数表示纵坐标向上移动。而且如果这两个值大于当前屏幕的大小,鼠标只能移到屏幕最边界的位置同时抛出 MoveTargetOutOfBoundsExecption 的异常。 鼠标移动操作在测试环境中比较常用到的场景是需要获取某元素的 flyover/tips,实际应用中很多 flyover 只有当鼠标移动到这个元素之后才出现,所以这个时候通过执行 
moveToElement(toElement) 操作,就能达到预期的效果。但是根据我个人的经验,这个方法对于某些特定产品的图标,图像之类的 flyover/tips 也不起作用,虽然在手动操作的时候移动鼠标到这些图标上面可以出现 flyover, 但是当使用 WebDriver 来模拟这一移动操作时,虽然方法成功执行了,但是 flyover 却出不来。所以在实际应用中,还需要对具体的产品页面做相应的处理。
清单 7. 鼠标释放操 
Actions action = new Actions(driver);   action.release();// 释放鼠标 
PS:一般只使用移动的事件,不点击的情况下鼠标事件可以不释放

Selenium中的鼠标单击事件相关推荐

  1. java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件

    不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件 关注:54  答案:3  信息版本:手机版 电脑版 解决时间 2021-01-13 04:21 提问者少走感情路 2021-01-12 08:3 ...

  2. C# FrameworkElement子类实现鼠标双击和鼠标单击事件

    继承自FrameworkElement的类实现鼠标双击.鼠标单击事件,以及获取鼠标点击的位置 代码如下: using System.Windows; using System.Timers; publ ...

  3. 【Qt一骚操作】Qt 开发中触发鼠标悬停事件

    Qt 开发中触发鼠标悬停事件 (1)setAttribute( Qt::WA_Hover,true) //在构造函数中 ui->btnGetRadarPara->setAttribute( ...

  4. 在GridView中针对鼠标单击的某一独立单元格进行编辑

    原文地址: http://www.codeproject.com/KB/webforms/EditGridviewCells.aspx [原文源码下载] [译者改后源码下载] 作者:Declan Br ...

  5. python tk 获取鼠标事件_在Tkin中列出鼠标悬停事件函数

    我正在制作一个医学工具的图形用户界面作为一个类项目.给定一个条件,它应该输出一堆从不同网站收集的治疗方案,比如webMD.我希望能够处理所列出的任何一种疗法的鼠标悬停事件,以提供关于该疗法的更多信息( ...

  6. 设计一个应用程序,以在C#中的按钮单击事件上在MessageBox中显示TextBox中的文本...

    Here, we took two controls on windows form that are TextBox and Button, named txtInput and btnShow r ...

  7. 如何在AutoCAD中实现鼠标双击事件

    摘要:本文为在AutoCAD ObjectARX二次开发中遇到的鼠标双击事件提供了多种解决方法. 在AutoCAD编程中,开发者可能会有这样一个好想法,或者用户有这么一个需求:当用鼠标双击某个实体的时 ...

  8. Android中ExpandableListView子项单击事件没有响应

    前言 此问题多半是加入了Button等可以接收单击事件和可以接收焦点的控件导致. ExpandableListView控件的单击事件的要求大多数大神都已经说过了 1.BaseExpandableLis ...

  9. python鼠标事件包括哪几种_python-在Tkinter中列出鼠标悬停事件函数

    我正在将医疗工具的GUI制作为课程项目.给定条件后,它应输出从不同网站(如webMD)收集的一堆治疗选项.我希望能够处理任何列出的治疗方法的鼠标悬停事件,以提供有关该治疗方法的更多信息(例如,药物类别 ...

  10. js中的鼠标滚轮事件

    ## 事件对象 event1 event事件对象,表示用来获取事件的详细信息,比如得到鼠标的横坐标:事件对象.clientX(clientX是可视区坐标)window.onclick = functi ...

最新文章

  1. “不会Linux,到底有多危险?”骨灰级成程序员:基本等于自废武功!
  2. autofs一个神奇的服务
  3. Delphi 7下使用VT实现树型列表结合控件
  4. 【基于XML方式】Spring整合Kafka
  5. 【指数机制代码实现】差分隐私代码实现系列(十)
  6. 机器学习基础(三)——信息、信息熵与信息增益
  7. 安卓studio没有java.xml_Android文件(Java和XML)被奇怪的XML替换
  8. ai旋转扭曲_AI变换及旋转图形工具详解
  9. 笔记本运行php的快捷键是啥,雷神笔记本u盘启动快捷键是什么|雷神笔记本按哪个键进u盘启动...
  10. 杭电操作系统实验三--- 实现模拟shell(arm架构华为云)
  11. 妙用Java 8中的 Function接口 消灭if...else...
  12. Typora如何将图片使用相对路径保存到统一文件夹中(解决.md文档传输丢图片的方法)
  13. winfomlabel 从右边_炒菜时,用左边的燃气灶还是右边的燃气灶?燃气师傅提醒,别弄错...
  14. Prometheus Operator 部署
  15. 新版骗分导论(最少骗到省级三等奖)
  16. 如何用地道流利的英语写好一份求职信
  17. 闵帆教授《论文写作》心得体会
  18. 使用 Google Fonts 为网页添加美观字体
  19. 毕业后考FRM vs 毕业后工作,差别很大吗?
  20. USBtoTTL用FLyMcu给STM32下载程序的一个问题

热门文章

  1. 遇到问题--python---ImportError: Missing optional dependency ‘xlrd‘. Install xlrd >= 1.0.0 for Excel supp
  2. VB编程:SelectCase多分支选择结构实例测试生肖运势-13
  3. 无线桥接怎么设置网关和dns服务器,两个无线路由器进行桥接的设置方法
  4. Redis中雪崩、击穿、穿透详解
  5. latex 公式编号
  6. 拆解玩具电池充电器:充久了可能会爆,廉价电路方案让人震惊!
  7. Go语言学习系列 -- 大道至简—GO语言最佳实践​​​​​​​
  8. java使用aspose打印pdf、word文件
  9. JZOJ 3337. 【NOI2013模拟】wyl8899的TLE
  10. 华为设备的安全配置console及telnet