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")。
selenium webdriver模拟鼠标键盘操作的更多相关文章
- Java+selenium之WebDriver模拟鼠标键盘操作(六)
org.openqa.selenium.interactions.Actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用 perform()方法进行执行 ...
- selenium webdriver模拟鼠标键盘
在测试使用Selenium webdriver测试WEB系统的时候,用到了模拟鼠标.键盘的一些输入操作. 1.鼠标的左键点击.双击.拖拽.右键点击等: 2.键盘的回车.回退.空格.ctrl.alt.s ...
- 将CodedUI Test 放到控制台程序中,模拟鼠标键盘操作
CodedUI Test是微软的自动化测试工具,在VS中非常好用.可以用来模拟鼠标点击,键盘输入.但执行的时候必须要用mstest调用,无法传入参数(当然可以写入config文件中,但每次修改十分麻烦 ...
- selenium webdriver(4)---模拟鼠标键盘操作
webdriver提供Actions来模拟鼠标悬浮.拖拽和键盘输入等操作,详细代码见org.openqa.selenium.interactions.Actions.本文通过几个实例来说明Action ...
- selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等
selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...
- selenium模拟鼠标键盘操作
简单操作: 1.点击(鼠标左键)页面按钮:click() 2.清空输入框:clear() 3.输入字符串:send_keys()submit提交表单: 1.一般情况可以点击搜索按钮来搜索 2.也可以用 ...
- python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为
0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...
- selenuim2模拟鼠标键盘操作
有时候有些元素不便点击或者做其他的操作,这个时候可以借助selenium提供的Actions类,它可以模拟鼠标和键盘的一些操作,比如点击鼠标右键,左键,移动鼠标等操作.对于这些操作,使用perform ...
- selenium - webdriver - Keys类(键盘操作)
Keys()类提供了键盘上几乎所有按键的方法,这个类可用来模拟键盘上的按键,包括各种组合键,如 Ctrl+A, Ctrl+X,Ctrl+C, Ctrl+V 等等 from selenium impor ...
随机推荐
- vue项目打包之后页面空白解决办法
之前项目遇到个情况,npm run build打包之后上传到服务器后,index.html打开一片空白,资源都加载了,但是就是不显示. 然后百度找了原因,修改了两处地方 一.修改 assetsPubl ...
- Mysql命令行导入sql数据
mysqldump 是在 操作系统命令行下运行的,不是在 MySQL 命令行下运行的. 登陆数据库: 登陆本地mysql : mysql -h localhost -u root -p123456 ...
- MYSQL的索引和常见函数
MySQL的索引 索引机制 MySQL属于关系型数据库,为了提高查询速度,可以创建索引. 索引:由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B树或者hash表中),于是又分为B树索引(I ...
- [转]了解如何通过reverse_iterator的base得到iterator
转自:http://blog.csdn.net/shuchao/article/details/3705252 调用reverse_iterator的base成员函数可以产生“对应的”iterator ...
- 在openLdap上添加memberOf属性
我为openldap添加memberof属性的时候参考了这个文章:http://www.adimian.com/blog/2014/10/how-to-enable-memberof-using-op ...
- kettle中使用JavaScript的一个例子
最近在使用kettle的时候遇到一个问题,需要对输入的一个字段进行格式化,逻辑比较复杂(需要做替换掉指定的字符串,然后将数字部分不足四位的数前边补0等操作),kettle中没有提供直接的插件来支持复杂 ...
- iOS - 利用 iTunes 接口检查 App 版本更新
iOS 想要检查 App 当前版本是否为最新,一般的方案大概都是服务器自己提供一个接口来获取 App 最新版本是多少,然后再做出相应提示是否需要更新,但是接口需要手动维护,应用要审核,还得等审核通过以 ...
- HTML表单的运用
没学习HTML表单之前,觉得文本框.密码框.隐藏域.单选按钮.复选框等这些在平常页面常见到的表单不起眼,挺简单,到自己用代码区实现将它们灵活串联运用起来,才发现一点都不简单.看着容易,自己操作还是出现 ...
- HOJ 2091 Chess(三维简单DP)
Chess My Tags (Edit) Source : Univ. of Alberta Local Contest 1999.10.16 Time limit : 1 sec Memory li ...
- POJ 2398 - Toy Storage - [计算几何基础题][同POJ2318]
题目链接:http://poj.org/problem?id=2398 Time Limit: 1000MS Memory Limit: 65536K Description Mom and dad ...