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 socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python 内置函数filter
Jun 01 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
Python实现KNN(K-近邻)算法的示例代码
Mar 05 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
Python如何测试stdout输出
Aug 10 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
通过代码实例了解Python异常本质
Sep 16 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 Python
Python按顺序遍历并读取文件夹中文件
Apr 29 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的宝库目录--PEAR
2006/10/09 PHP
php下通过POST还是GET来传值
2008/06/05 PHP
第四章 php数学运算
2011/12/30 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python实现滑雪游戏
2020/02/22 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
销售文员的岗位职责
2013/11/20 职场文书
工作过失检讨书
2014/02/23 职场文书
校车安全责任书
2014/08/25 职场文书
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers