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获取网页状态码示例
Mar 30 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
基于进程内通讯的python聊天室实现方法
Jun 28 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
python如何使用unittest测试接口
Apr 04 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
Python目录和文件处理总结详解
Sep 02 Python
python实现简单日志记录库glog的使用
Dec 13 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 Python
python实现简单的井字棋
May 26 Python
python在package下继续嵌套一个package
Apr 14 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生成静态页
2006/11/25 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
python time模块用法实例详解
2014/09/11 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
使用python存储网页上的图片实例
2018/05/22 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python实现静态服务器
2019/09/05 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
马来西亚网上购物:Youbeli
2018/03/30 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
SQL Server面试题
2016/10/17 面试题
小学教师的自我评价范例
2013/10/31 职场文书
数学专业毕业生自荐信
2013/11/10 职场文书
应付会计岗位职责
2013/12/12 职场文书
学生会主席竞聘书
2014/03/31 职场文书
公司合作协议书范本
2014/04/18 职场文书
学生会主席演讲稿
2014/04/25 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
如何利用golang运用mysql数据库
2022/03/13 Golang
Redis高并发缓存架构性能优化
2022/05/15 Redis