selenium+python自动化测试之鼠标和键盘事件


Posted in Python onJanuary 23, 2019

前面的例子中,点击事件都是通过click()方法实现鼠标的点击事件。其实在WebDriver中,提供了许多鼠标操作的方法,这些操作方法都封装在ActionChains类中,包括鼠标右击、双击、悬停和鼠标拖动等功能。

ActionChains类提供的鼠标操作事件

  • context_click():点击鼠标右键
  • double_click():双击鼠标
  • drag_and_drop():拖动鼠标
  • move_to_element():鼠标悬停

鼠标悬停

页面上有些下拉菜单,在鼠标放到元素上以后,下面的菜单才会显示出来。下面的图片就是一个例子

selenium+python自动化测试之鼠标和键盘事件

百度首页上的设置项,下面的菜单默认不会显示,将鼠标停在上面后才会显示,这就是鼠标的悬停操作,菜单显示以后就可以对下面的项进行点击操作

进入搜索设置的代码

# -*- coding: utf-8 -*-

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(3)

settings = driver.find_element_by_link_text('设置')
webdriver.ActionChains(driver).move_to_element(settings).perform()

time.sleep(1)

settings_search = driver.find_element_by_class_name('setpref')
settings_search.click()

time.sleep(3)
driver.close()

打开页面后,根据链接的文本信息找到设置项,使用ActionChains的move_to_element()方法将鼠标悬停在设置上,然后找到搜索设置项

鼠标的右击、双击和拖动事件都是通过上述的方法调用,只要将方法替换一下就可以了。拖动事件需要传入两个参数,第一个参数是拖动的起点元素,第二个参数是终点元素

webdriver.ActionChains(driver).context_click("右击的元素定位").perform() #右击事件
webdriver.ActionChains(driver).double_click("双击的元素定位").perform() #双击事件
webdriver.ActionChains(driver).drag_and_drop("拖动的起点元素", "拖动的终点元素").perform() #拖动事件

键盘事件

Keys类中提供了几乎所有的键盘事件,在鼠标事件中用到了两个键盘事件,键盘的向下按键(send_keys(Keys.DOWN))和键盘的回车事件(send_keys(Keys.ENTER))。键盘的事件需要导入Keys模块

from selenium.webdriver.common.keys import Keys

所有的键盘事件都包含在这个模块中,send_keys用来模拟键盘输入,除此之外,还可以用例模拟键盘上的按键,不仅支持单个的键盘按键,还支持组合按键输入

# -*- coding: utf-8 -*-

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(3)

driver.find_element_by_id('kw').send_keys('selenium') #在搜索框中输入"selenium"
driver.find_element_by_id('kw').send_keys(Keys.SPACE) #输入空格键
driver.find_element_by_id('kw').send_keys('python') #在搜索框中输入"python"
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a') #输入Control+a模拟全选
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c') #输入Control+c模拟复制
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'v') #输入Control+v模拟粘贴
driver.find_element_by_id('kw').send_keys(Keys.ENTER) #输入回车代替点击搜索按钮

time.sleep(3)
driver.close()

下面是一些常用的键盘事件:

? Keys.BACK_SPACE:回退键(BackSpace)
? Keys.TAB:制表键(Tab)
? Keys.ENTER:回车键(Enter)
? Keys.SHIFT:大小写转换键(Shift)
? Keys.CONTROL:Control键(Ctrl)
? Keys.ALT:ALT键(Alt)
? Keys.ESCAPE:返回键(Esc)
? Keys.SPACE:空格键(Space)
? Keys.PAGE_UP:翻页键上(Page Up)
? Keys.PAGE_DOWN:翻页键下(Page Down)
? Keys.END:行尾键(End)
? Keys.HOME:行首键(Home)
? Keys.LEFT:方向键左(Left)
? Keys.UP:方向键上(Up)
? Keys.RIGHT:方向键右(Right)
? Keys.DOWN:方向键下(Down)
? Keys.INSERT:插入键(Insert)
? DELETE:删除键(Delete)
? NUMPAD0 ~ NUMPAD9:数字键1-9
? F1 ~ F12:F1 - F12键
? (Keys.CONTROL, ‘a'):组合键Control+a,全选
? (Keys.CONTROL, ‘c'):组合键Control+c,复制
? (Keys.CONTROL, ‘x'):组合键Control+x,剪切
? (Keys.CONTROL, ‘v'):组合键Control+v,粘贴

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python函数返回多个值的示例方法
Dec 04 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Django学习笔记之为Model添加Action
Apr 30 Python
Python PIL图片添加字体的例子
Aug 22 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
Python SSL证书验证问题解决方案
Jan 13 Python
PyTorch在Windows环境搭建的方法步骤
May 12 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
python实现学生信息管理系统(面向对象)
Jun 05 Python
selenium+python自动化测试之页面元素定位
Jan 23 #Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 #Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 #Python
对Python实现累加函数的方法详解
Jan 23 #Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 #Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 #Python
selenium+python自动化测试之环境搭建
Jan 23 #Python
You might like
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
js中作用域的实例解析
2017/03/16 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
Mac下安装vue
2018/04/11 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
python Django的web开发实例(入门)
2019/07/31 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
python命令 -u参数用法解析
2019/10/24 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
EJB的基本架构
2016/09/22 面试题
酒店实习个人鉴定
2013/12/07 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS