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模拟登录12306的方法
Dec 30 Python
浅谈Python单向链表的实现
Dec 24 Python
Python使用PDFMiner解析PDF代码实例
Mar 27 Python
python requests 使用快速入门
Aug 31 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
python实现批量修改文件名
Mar 23 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
浅谈Python类的单继承相关知识
May 12 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 socket方式提交的post详解
2008/07/19 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
python切换hosts文件代码示例
2013/12/31 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
Python PIL库图片灰化处理
2020/04/07 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
农村改厕实施方案
2014/03/22 职场文书
我的画教学反思
2014/04/28 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js