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线程锁(thread)学习示例
Dec 04 Python
Python函数式编程指南(三):迭代器详解
Jun 24 Python
Python3访问并下载网页内容的方法
Jul 28 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
Python实现的从右到左字符串替换方法示例
Jul 06 Python
python开发游戏的前期准备
May 05 Python
python日志模块logbook使用方法
Sep 19 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
opencv用VS2013调试时用Image Watch插件查看图片
Jul 26 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
Python 初始化多维数组代码
2008/09/06 Python
python常见的格式化输出小结
2016/12/15 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
使用matplotlib画散点图的方法
2018/05/25 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
python的sys.path模块路径添加方式
2020/03/09 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
教师通用专业自荐书范文
2014/02/11 职场文书
人大代表选举标语
2014/10/07 职场文书
商铺门面租房协议书
2014/10/21 职场文书
保研推荐信范文
2015/03/25 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
python四种出行路线规划的实现
2021/06/23 Python
MySQL 服务和数据库管理
2021/11/11 MySQL