博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium WebDriver 中鼠标事件
阅读量:7211 次
发布时间:2019-06-29

本文共 2503 字,大约阅读时间需要 8 分钟。

 

鼠标点击操作 
鼠标点击事件有以下几种类型: 
清单 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:一般只使用移动的事件,不点击的情况下鼠标事件可以不释放

转载于:https://www.cnblogs.com/weiwei-python/p/9807929.html

你可能感兴趣的文章
server 2008 跨进新的平台(二)
查看>>
exchange 2010申请分配证书服务提示:证书无效,不可用于exchange server
查看>>
ASP.NET MVC中,通用的异常处理
查看>>
Struts tiles入门(最最简单的例子)
查看>>
SpringBoot入门系列: Spring Boot的测试
查看>>
USequencer系列 |初识
查看>>
ARP攻击实战
查看>>
PowerDNS管理工具开发中学习到的DNS知识
查看>>
命令行出错Exception in thread "main" java.lang.UnsupportedClassVersionError:
查看>>
Vbs压缩备份文件夹以日期命名
查看>>
Myeclipse启动Tomcat服务器Address already in use: JVM_Bind
查看>>
svn服务器安装与配置
查看>>
deprecated conversion from string constant to ‘char*’
查看>>
SSH实战项目——在线商品拍卖网
查看>>
The Distribution File System
查看>>
Jvm原理剖析与调优之内存结构
查看>>
TortoiseSVN文件夹及文件图标不显示解决方法
查看>>
技术的价值--从实验到企业实施的关键性思想
查看>>
在VMWare中配置SQLServer2005集群 Step by Step(四)——集群安装
查看>>
实战:通过组策略为用户部署软件
查看>>