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 读写中文json的实例详解
Oct 29 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
Python对多属性的重复数据去重实例
Apr 18 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Python日期时间Time模块实例详解
Apr 15 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
python 如何执行控制台命令与操作剪切板
May 20 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桌面中心(四) 数据显示
2007/03/11 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
javascript 写类方式之二
2009/07/05 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
js实现缓动动画
2020/11/25 Javascript
Python 深入理解yield
2008/09/06 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
Python补齐字符串长度的实例
2018/11/15 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
python批量处理txt文件的实例代码
2020/01/13 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Python 发送邮件方法总结
2020/08/10 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
社区包粽子活动方案
2014/01/21 职场文书
高二物理教学反思
2014/02/08 职场文书
重阳节主题班会
2015/08/17 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL