selenium webdriver模拟鼠标键盘操作

在测试使用Selenium webdriver测试WEB系统的时候,用到了模拟鼠标、键盘的一些输入操作。

1、鼠标的左键点击、双击、拖拽、右键点击等;

2、键盘的回车、回退、空格、ctrl、alt、shift等;

在webdriver中,有专门的一个类,是用来进行鼠标、键盘模拟操作的,那就是Actions类,该类使用时,又会涉及到Keyboard、Mouse、CompositeAction(复合动作),先对Mouse的方法做简单罗列,然后再用代码说明:

1、鼠标左键点击:

Actions action = new Actions(driver);

action.click(driver.findElement(By.by);

左键点击是普通常用的方法,前面已经介绍过一种更简单的方法:

Driverdriver=new Driver();

driver.findElement(By.xpath(xpath)).click();

 

2、鼠标左键双击:

Actionsaction = new Actions(driver);

action.doubleClick(driver.findElement(By.xpath(xpath)));

 

3、鼠标左键按下操作:

Actionsaction = new Actions(driver);

action.clickAndHold(driver.findElemen(By.xpath(xpath)));

 

4、鼠标左键移动到元素操作:

Actionsaction = new Actions(driver);

action.moveToElement(driver.findElement(By.xpath(xpath)));

 

5、鼠标右键点击操作:

Actionsaction = new Actions(driver) ;

action.contextClick(driver.findElement(By.xpath(xpath)));

 

6、组合的鼠标操作(将目标元素拖拽到指定的元素上):

Actionsaction = new Actions(driver);

action.dragAndDrop(driver.findElement(By.xpath(xpath)),driver.findElement(By.xpath(xpath)));

 

7、组合的鼠标操作(将目标元素拖拽到指定的元素上):

Actionsaction = new Actions(driver);

action.dragAndDrop(driver.findElement(By.xpath(xpath)),xOffset,yOffset);

 

代码演示:

driver.get("http://www.baidu.com");

driver.findElement(By.name("wd")).sendKeys("林丹");

 

//点击操作

driver.findElement(by.id("su")).click();

driver.navigate().back();

Actionsaction=new Actions(driver);

action.click(driver.findElement(by.id("su")));

 

//双击操作(略)

 

//拖拽选择操作,鼠标按住不放,进行拖拽选择,然后释放鼠标,需要三个动作

action.clickAndHold(driver.findElement(By.id("1"))).moveToElement(driver.findElement(By.id("3"))).perform();

action.release();

 

//拖拽元素,将一个元素拖拽到另一个元素上,然后释放鼠标(略)

 

键盘模拟操作,包括普通按键,比如enter、backspace、tab等,还包括四个修饰键(Modifier Keys),分别是Caps Lock,Control,Option,Command。

普通按键使用时,直接使用sendkeys(theKeys)就可以,如按下enter键:

action.sendKeys(Keys.ENTER).perform();

 

修饰键一般使用时,是和别的按键配合使用的,比如快捷键ctrl+F4,这时就得使用keyDown(theKeys)、keyUp(theKeys)来操作,代码如下:

driver.get("http://www.baidu.com");

driver.findElement(by.name("wd")).sendKeys("林丹");

Actionsaction=new Actions(driver);

//输入框中输入内容,然后点击回车进行百度

action.sendKeys(Keys.ENTER).perform();

//使用快捷键alt+f4关闭窗口(但是该方法不稳定,时行时不行,不行居多)

action.keyDown(keys.ATL).keyDown(keys.F4).keyUp(keys.ALT).perform();

//使用ctrl+a全选

driver.findElement(By.id("kw")).click();

action.sendKeys(Keys.CONTROL+"a").perform();

 

Tips:

1、拖拽选择时,使用clickAndHold和moveToElement时,会受到鼠标所在位置的影响,所以尽量是两个方法一起使用;

2、拖拽元素时,dragAndDrop方法,我没有找到实现的场景,所以没有写代码试验;

3、直接按下普通按键时,直接使用sendkeys(theKeys)方法就能够实现;

4、需要使用修饰键时,需要连贯动作中应该使用keydown和keyup方法;

action.keyDown(keys.ATL).sendKeys(keys.F4).keyUp(keys.ALT).perform();//这是不能实现alt+f4关闭窗口的效果的,只能实现单独按f4的效果

5、对于一些快捷键,如ctrl+a,可以直接sendkeys(Keys.CONTROL+"a")。

转载于:https://www.cnblogs.com/nuomin/p/8420719.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NILMTK——经典数据集REDD介绍和使用

配置了NILMTK包的环境之后,想找数据测试一下,在NILMTK官网的API Docs里边发现dataset_converters模块中有内置的数据集处理函数,如图: 将数据转换成HDF文件,这些数据都是比较优秀的,其中,常用的…

[转]ASP中ActiveX控件的内嵌及调用

懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多;如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到。众所周知,ActiveX技术是微软在Internet上除了IE外的另…

Linux C实现简单的shell

Linux C下实现简单的Shell 宗旨:技术的学习是有限的,分享的精神是无限的。 【需求描述】 用各种C函数实现一个简单的交互式Shell: 1、给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的exec函数执行程序…

上拉电阻的作用

1、介绍使用微控制器(MCUs) 或任何数字逻辑设备时,上拉电阻器非常常见。本教程将解释何时何地使用上拉电阻器,然后我们将做一个简单的计算,以显示为什么上拉很重要。2、上拉电阻是什么?假设您有一个将一个引…

NILMTK——深扒组合优化(CO)和FHMM细节

前面的博客讲了具体实现,现在深究算法代码实现细节!!! 1.CO (1)关于train 从以下代码可知,CO首先是对各个电器的功率数据做了train,为了了解其原生实现对代码进行了深究: classifiers {CO:…

Python关键字

and  as  assert  break  class  continue   def  del  elif  else  except  exec  finally   for  from  global  if  import  in  is  lambda not  or  pass  print  raise  return  try while  with  yield  Non…

对51CTO的初步看法

决定给自己见一个技术博客之后,在网上搜了一下,发现了51CTO网站,进入之后发现网速够快,有尝试了博客的功能,也基本满足了我的要求,那就是它了,于是我就在51CTO安家了。写了两片共近千字的文章之…

深圳工资指导价出炉!最高月薪6万!你拖同行后腿了吗?

2020 年只剩下不到一个月了,年初立的 flag 有没有实现呢?我想多数人面临的尴尬是升职、加薪、赢取白富美、走上人生巅峰可能一步都没实现~对比周围混得风生水起的小伙伴感觉自己也不差啥啊,怎么就莫名其妙被甩了八条街?想一探究竟…

NILMTK——因子隐马尔可夫之隐马尔可夫

因子隐马尔可夫(FHMM)由Ghahramani在1997年提出,是一种多链隐马尔可夫模型,适合动态过程时间序列的建模,并具有强大的时序模型的分类能力,特别适合非平稳、再现性差的序列的分析。 1. 马尔可夫链 随机过程的研究对象是随时间演变…

CodeForces 903D Almost Difference

题目描述 Lets denote a function You are given an array aa consisting of nn integers. You have to calculate the sum of d(a_{i},a_{j})d(ai​,aj​) over all pairs (i,j)(i,j) such that 1<i<j<n1<i<j<n . 输入输出格式 输入格式&#xff1a; The fi…

如何使用资源文件

摘要.NET 中有一套非常完善的地方化系统被定义在 System.Resources 名字空间中。不过大多数人都被 MissingManifestResourceException 这个错误困惑着。本文就是要让大家了解什么是资源文件&#xff0c;它有什么用处以及如何正确的调用从而避免一些"奇怪"的错误&…

据悉,深圳某工程师沦为C语言笔试枪手

事情是这样的&#xff0c;昨晚晚上&#xff0c;有个网友发消息给我&#xff0c;说他有几道C语言笔试题不会写&#xff0c;所以&#xff0c;就出现了解题的这一幕。文章中&#xff0c;我只讲解了一部分&#xff0c;有一些题目觉得没必要讲&#xff0c;然后我在pdf上做了注释&…

大数据工具使用——安装Hadoop(多台服务器)和Hive、Hbase

1.配置环境版本 资料上传百度云&#xff0c;自取&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1evVp5Zk0_X7VdjKlHGkYCw 提取码&#xff1a;ypti 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 &#xff08;之前安装的是apache版本的Hadoop2.6.4,在启…

进程间通信——信号

进程间通信——信号 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、信号和中断 1、信号基本概念 &#xff08;1&#xff09;发送信号&#xff1a;产生信号&#xff0c;有多种发送信号的方式【一个进程到另一个进程&#xff0c;内核向用户&#x…

[转] 关于 WCF 中数据压缩的几篇文章

原文:http://www.cnblogs.com/jiabao/archive/2007/12/04/982534.html在.net3.0出现以前我们进行分布式开发式有两个选择一个是webservice&#xff0c;另一个是remoting&#xff1b;在早期的项目中&#xff0c;比较喜欢remoting&#xff0c;因为remoting可控性好&#xff0c;也…

聊一聊我自己的从业经历和感悟

嵌入式学习&#xff0c;是一个很枯燥的过程&#xff0c;我记得在学习三极管的时候&#xff0c;我真的对这个东西一点感觉都没有&#xff0c;我知道三极管可以放大&#xff0c;然后电子从一个地方去到了另一个地方&#xff0c;然后就触发了某个开关&#xff0c;就发了大水。然后…

gmake与make的区别

gnu make在linux下一般是叫make但是如果是在其他的unix系统下&#xff0c;因为有一个原生的makegnu make就改个名字叫gmake了。就这们简单当port一个老的unix程序&#xff0c;如老的SunOS上的程序时往往需要sed s/gmake/make/ggmake是GNU Make的缩写。Linux系统环境下的make就是…

大数据——sqoop操作mysql和hive导出导入数据

1.sqoop安装 &#xff08;1&#xff09;下载CDH版本的sqoop &#xff08;2&#xff09;解压并进行环境配置 环境变量为&#xff1a; export SQOOP_HOME/home/sqoop-1.4.6-cdh5.15.1 export PATH$PATH:$SQOOP_HOME/bin 在sqoop安装目录/conf/下&#xff1a; #新建sqoop-en…

LinuxC高级编程——线程

LinuxC高级编程——线程 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、线程基础 main函数和信号处理函数是同一个进程地址空间中的多个控制流程&#xff0c;多线程也是如 此&#xff0c;但是比信号处理函数更加灵活&#xff0c;信号处理函数的控制…

来自专业的RIA咨询strechmedia机构提供的Flex组件

具体内容见这里&#xff0c;其中最有用的是chart range selection组件&#xff0c;可以用作历史数据浏览和分析&#xff0c;不光能用slider来选择查看的范围&#xff0c;还能控制范围的大小&#xff0c;而且通过图形也能对range selection进行反向操作&#xff0c;非常酷&#…