Python selenium键盘鼠标事件实现过程详解


Posted in Python onJuly 28, 2020

引言

----在实际的web测试工作中,需要配合键盘按键来操作,webdriver的 keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl+a,Ctrl+v等。

举例:

#cording=gbk
import os
import time
from selenium import webdriver
from selenium.webdriver.common.by import By #导入by方法
from selenium.webdriver.common.action_chains import ActionChains  ##对鼠标事件操作
from selenium.webdriver.common.keys import Keys # 对键盘事件操作

current_path=os.path.dirname(__file__)
firefox_path=current_path+"/../webdriver/geckodriver.exe"
driver=webdriver.Firefox(executable_path=firefox_path)
driver.get("http://www.baidu.com")

# 先输入百度
driver.find_element_by_id('kw').send_keys('百度')
time.sleep(3)
# 1.删除度
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)
time.sleep(3)

#2.清空输入框,重新输入值
driver.find_element_by_id('kw').clear()
driver.find_element_by_id('kw').send_keys('安琪儿')
time.sleep(5)

# 3.ctrl+a 全选输入框里的内容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
time.sleep(3)

# 4.ctrl+x 剪切输入框里的内容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'x')
time.sleep(3)

# 5. ctrl+v 粘贴剪切的内容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'v')
time.sleep(3)

# 6. 回车
driver.find_element_by_id('su').send_keys(Keys.ENTER)
time.sleep(3)

在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击、双击、拖动等操作,这些操作包含在ActionChains类中。

ActionChains类中鼠标操作常用方法:

  • context_click() :右击
  • double_click() :双击
  • drag_and_drop() :拖动
  • move_to_element() :鼠标移动到一个元素上

举例:

#cording=gbk
import os
from selenium import webdriver
from selenium.webdriver.common.by import By #导入by方法
from selenium.webdriver.common.action_chains import ActionChains  ##对鼠标事件操作

current_path=os.path.dirname(__file__)
firefox_path=current_path+"/../webdriver/geckodriver.exe"
driver=webdriver.Firefox(executable_path=firefox_path)
driver.get("http://127.0.0.1/zentao/user-login-L3plbnRhby9teS5odG1s.html")

mouse=ActionChains(driver) #创建一个鼠标对象
# element1=driver.find_element(By.XPATH,"//img[@src='/zentao/theme/default/images/main/zt-logo.png']") #Xpath利用属性定位
element1=driver.find_element(By.XPATH,"//img[contains(@src,'images/main/zt-logo.png')]") #xpath使用包含属性方法定位
mouse.context_click(element1).perform() #执行鼠标右击,.perform() 表示执行

element2=driver.find_element(By.XPATH,"//button[@type='button' and @class='btn' ]") #多属性定位
mouse.move_to_element(element2).perform() #移动到这个元素上

#对元素进行截图
driver.find_element(By.XPATH,"//button[@id='submit'][@type='submit']").screensh

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python进程管理工具supervisor使用实例
Sep 17 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
Python IDLE清空窗口的实例
Jun 25 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
python动态文本进度条的实例代码
Jan 22 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Python编程super应用场景及示例解析
Oct 05 Python
用python写爬虫简单吗
Jul 28 #Python
公认8个效率最高的爬虫框架
Jul 28 #Python
python如何爬取网页中的文字
Jul 28 #Python
Python同时处理多个异常的方法
Jul 28 #Python
Python远程方法调用实现过程解析
Jul 28 #Python
Python 实现一个计时器
Jul 28 #Python
python爬虫要用到的库总结
Jul 28 #Python
You might like
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
JS 时间显示效果代码
2009/08/23 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
理解python正则表达式
2016/01/15 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
Python原始套接字编程实例解析
2020/01/29 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Python __slots__的使用方法
2020/11/15 Python
Overload和Override的区别
2012/09/02 面试题
初中生期末考试的自我评价
2013/12/17 职场文书
培训主管岗位职责
2014/02/01 职场文书
初三学生个人自我评定
2014/04/06 职场文书
大学自主招生推荐信
2014/05/10 职场文书
校园文明倡议书
2014/05/16 职场文书
化工厂员工工作总结
2015/10/15 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript