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 相关文章推荐
Python2中文处理纪要的实现方法
Mar 10 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
django+mysql的使用示例
Nov 23 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
python scrapy重复执行实现代码详解
Dec 28 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
Python判断字符串是否为空和null方法实例
Apr 26 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
python中if和elif的区别介绍
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
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
JS实现随机点名器
2020/04/12 Javascript
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python基本语法练习实例
2017/09/19 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
详解Python_shutil模块
2019/03/15 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
django中嵌套的try-except实例
2020/05/21 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
Python 实现一个计时器
2020/07/28 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
大型公益活动策划方案
2014/08/20 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
公司业务员管理制度
2015/08/05 职场文书
导游词之桂林山水
2019/09/20 职场文书