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实现数据库并行读取和写入实例
Jun 09 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
用python处理MS Word的实例讲解
May 08 Python
基于DataFrame改变列类型的方法
Jul 25 Python
Django安装配置mysql的方法步骤
Oct 15 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
Python 自由定制表格的实现示例
Mar 20 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
PyTorch的torch.cat用法
Jun 28 Python
Python绘图之柱形图绘制详解
Jul 28 Python
python 录制系统声音的示例
Dec 21 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常用的安全过滤函数集锦
2014/10/09 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
php自定义时间转换函数示例
2016/12/07 PHP
Javascript注入技巧
2007/06/22 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
python实现五子棋小游戏
2020/03/25 Python
django中间键重定向实例方法
2019/11/10 Python
Python如何使用函数做字典的值
2019/11/30 Python
基于python监控程序是否关闭
2020/01/14 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
什么是Python包的循环导入
2020/09/08 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
竞聘副主任科员演讲稿
2014/01/11 职场文书
办公室文员自荐书
2014/02/03 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
单位接收函格式
2015/01/30 职场文书
大学生自荐书范文
2015/03/05 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL