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中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
Python遍历pandas数据方法总结
Feb 09 Python
python和shell获取文本内容的方法
Jun 05 Python
Python get获取页面cookie代码实例
Sep 12 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
Python中and和or如何使用
May 28 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
Python类及获取对象属性方法解析
Jun 15 Python
python 使用建议与技巧分享(四)
Aug 18 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
php实现socket推送技术的示例
2017/12/20 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
js写一个字符串转成驼峰的实例
2013/06/21 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python字典对象实现原理详解
2019/07/01 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
jupyter notebook 多行输出实例
2020/04/09 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
前台接待的工作职责
2013/11/21 职场文书
挂牌仪式主持词
2014/03/20 职场文书
护理目标管理责任书
2014/07/25 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL