在测试使用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

selenium webdriver模拟鼠标键盘操作相关推荐

  1. C# 模拟 鼠标 键盘操作

    C# 模拟 鼠标 键盘操作 转载于:https://www.cnblogs.com/macT/p/10208222.html

  2. python截图工具和模拟鼠标键盘_python PyAutoGUI 模拟鼠标键盘操作和截屏功能

    简介 一款跨平台/无依赖的自动化测试工具,目测只能控制鼠标/键盘/获取屏幕尺寸/弹出消息框/截屏. 安装 pip install pyautogui 鼠标键盘控制 >>> impor ...

  3. 模拟鼠标键盘操作,含硬件模拟技术。[转]

    模拟鼠标键盘操作,含硬件模拟技术. 键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作.但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就 ...

  4. PyMouse模拟鼠标键盘操作

    PyMouse模拟鼠标键盘操作 使用PyMouse实现模拟鼠标键盘操作 -----解决方案1 1)安装[pyMouse]( https://pypi.org/project/PyMouse/) 2)安 ...

  5. 效率提升:使用AppleScript模拟鼠标键盘操作制作自动化工具

    文章目录 前言 AppleScript的实践应用 实践:还原修饰键默认设置 AppleScript基础知识 1.基本模块 语法 变量和属性 类型转换 运算符 List(数组) Record(键值对) ...

  6. Selenium自动化测试-6.鼠标键盘操作

    ------·今天距2020年77天·------ 这是ITester软件测试小栈第59次推文 大家好 我是vivi小胖虎 作为测试 好像对于点点点这事一直放不下 如何让点点点变得更简单 让人变得更懒 ...

  7. python模拟鼠标键盘操作_python3实现复制粘贴 Python-模拟鼠标键盘动作 | 猴头客

    1. 安装pyperclip pip install pyperclip 使用方法 复制 pyperclip.copy("hello world") 粘贴 pyperclip.pa ...

  8. python模拟按键包_今天玩点啥:利用python之PyUserInput实现模拟鼠标键盘操作,抢红包?聊天?自动下载?...

    一.PyUserInput安装 python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中.在python3.5中,直接安装PyUserInput模块即可 Py ...

  9. 模拟鼠标键盘操作,含硬件模拟技术。

    键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作.但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样 ...

最新文章

  1. 优化自动化测试流程,使用 flask 开发一个 toy jenkins工具
  2. 【django轻量级框架】用Mysql的各种项目响应速度慢?一招解决!
  3. 消除warning方法
  4. Flask的多app应用,多线程如何体现
  5. 让你的Tex代码更加美观就这么简单----Tex代码的自动格式化
  6. Java魔法类:Unsafe应用解析
  7. android 怎么调用js项目_APP逆向神器之Frida【Android初级篇】
  8. 参数估计法——最大似然估计和贝叶斯参数估计
  9. python中io中的+模式_Python----文件的IO操作
  10. Java网络编程:TCP实现聊天
  11. 吴恩达神经网络和深度学习-学习笔记-39-计算机视觉现状
  12. 激情转型 三大战役重塑AMD
  13. MIME,拓展名需要相应的软件打开
  14. Xbrowser远程连接显示灰屏
  15. blackbox_exporter的使用
  16. 色温(Kelvin)到RGB的转换:算法和样例
  17. 树上距离之和 1060E
  18. ffmpeg 从视频中提取WAV格式的音频
  19. Unittest框架介绍及常用组件
  20. 80后裸婚样本 一对中等收入夫妻的裸婚实录

热门文章

  1. JS window对象 Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL。 语法: location.[属性|方法]...
  2. JavaScript Iframe富文本编辑器中的光标定位
  3. 基于sqlite数据库的C语言编程
  4. 《孙子兵法》【作战第二】
  5. 专家答疑:在ERP系统中确保销售订单准确性
  6. Windows Workflow Foundation - [介绍及相关资源]
  7. dspmq dspmqver command not found(dspmq命令找不到,dspmqver主安装目录设置不正确
  8. GreenSock (TweenMax) 动画案例(二)
  9. Android属性动画进阶用法
  10. 第三课、Qt的诞生和本质------------------狄泰软件学院