Selenium-鼠标和键盘操作
Selenium-鼠标和键盘操作
- 1、鼠标操作
- 1.1 为什么要操作鼠标?
- 1.2 鼠标操作的方法
- 1.3 鼠标执行-perform()
- 1.4 鼠标右击-context_click()
- 1.4.1 练习-代码实现关键点分析
- 1.5 鼠标双击-double_click()
- 1.5.1 练习
- 1.6 鼠标拖拽-drag_and_drop()
- 1.7 鼠标悬停-move_to_element()
- 1.7.1 练习
- 2.键盘操作
- 2.1 Keys类
- 2.2 常用的键盘操作
- 2.3 案例
- 2.4 示例代码
1、鼠标操作
常见的鼠标操作有:点击、右击、双击、悬停、拖拽等,对于这些鼠标操作Selenium都封装了相应的操作方法。
1.1 为什么要操作鼠标?
现在Web产品中存在丰富的鼠标交互方式,作为一个Web自动化测试框架,需要应对这些鼠标操作的应用场景。
1.2 鼠标操作的方法
说明:在Selenium中将操作鼠标的方法封装在ActionChains类中
实例化对象: action = ActionChains(driver)
方法:1. context_click(element) 右击 --> 模拟鼠标右键点击效果 2. double_click(element) 双击 --> 模拟鼠标双击效果 3. drag_and_drop(source, target) 拖动 --> 模拟鼠标拖动效果 4. move_to_element(element) 悬停 --> 模拟鼠标悬停效果 5. perform() 执行 --> 此方法用来执行以上所有鼠标操作 为了更好的学习其他方法,我们先学习perform()执行方法,因为所有的方法都需要执行才能生效
1.3 鼠标执行-perform()
说明:在ActionChains类中所有提供的鼠标事件方法,在调用的时候所有的行为都存储在ActionChains对象中,
而perform()方法就是真正去执行所有的鼠标事件。强调:必须调用perform()方法才能执行鼠标事件
1.4 鼠标右击-context_click()
说明:对于点击鼠标右键,如果弹出的是浏览器默认的菜单,Selenium没有提供操作菜单选项的方法; 如果是自定义的右键菜单,则可以通过元素定位来操作菜单中的选项。
1.4.1 练习-代码实现关键点分析
# 需求:打开百度,在搜索框上点击鼠标右键1. 导包:from selenium.webdriver.common.action_chains import ActionChains
2. 实例化ActionChains对象:action = ActionChains(driver)
3. 调用右键方法:action.context_click(element)
4. 执行:action.perform()# 快速导包: Alt+Enter
# 快速调整格式: Ctrl+Alt+L# 导包
from selenium import webdriver
from selenium.webdriver import ActionChains# 获取浏览器驱动对象
driver = webdriver.Firefox()url = "https://www.baidu.com"
# 实例化 ActionChains对象
action = ActionChains(driver)driver.get(url)# 使用CSS id选择器获取搜索框
kw = driver.find_element_by_css_selector("#kw")
# 右击搜索框并执行
action.context_click(kw).perform()driver.quit()
1.5 鼠标双击-double_click()
说明:模拟双击鼠标左键操作
1.5.1 练习
# 需求:打开百度,在搜索框上输入CSDN,双击鼠标左键,选中CSDN# 导包
from time import sleepfrom selenium import webdriver# 获取浏览器驱动对象
from selenium.webdriver import ActionChainsdriver = webdriver.Firefox()url = "https://www.baidu.com"
# 实例化 ActionChains对象
action = ActionChains(driver)driver.get(url)# 使用CSS id选择器获取搜索框
kw = driver.find_element_by_css_selector("#kw")# 搜索框中输入CSDN
kw.send_keys("CSDN")driver.find_element_by_css_selector("[value= '百度一下']").click()
# 双击左键选中CSDN
action.double_click(kw).perform()sleep(5)
driver.quit()
1.6 鼠标拖拽-drag_and_drop()
说明:模拟鼠标拖动动作,选定拖动源元素释放到目标元素拖动关键点分析:1. 源元素 source = driver.find_element_by_id(xxx) 2. 目标元素 target = driver.find_element_by_id(xxx) 3. 调用方法 action.drag_and_drop(source, target).perform()
1.7 鼠标悬停-move_to_element()
说明:模拟鼠标悬停在指定的元素上
1.7.1 练习
# 需求:打开百度,在搜索框上输入CSDN,悬停# 导包
from time import sleepfrom selenium import webdriver# 获取浏览器驱动对象
from selenium.webdriver import ActionChainsdriver = webdriver.Firefox()url = "https://www.baidu.com"
# 实例化 ActionChains对象
action = ActionChains(driver)driver.get(url)# 使用CSS id选择器获取搜索框
kw = driver.find_element_by_css_selector("#kw")move = driver.find_element_by_css_selector('.aging-entry-inner')
# 悬停
action.move_to_element(move).perform()sleep(5)
driver.quit()
2.键盘操作
思考:如何实现复制、粘贴的操作?
说明:1). 模拟键盘上一些按键或者组合键的输入 如:Ctrl+C 、Ctrl+V; 2). Selenium中把键盘的按键都封装在Keys类中
2.1 Keys类
导包:from selenium.webdriver.common.keys import Keys
2.2 常用的键盘操作
1. send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
2. send_keys(Keys.SPACE) 空格键(Space)
3. send_keys(Keys.TAB) 制表键(Tab)
4. send_keys(Keys.ESCAPE) 回退键(Esc)
5. send_keys(Keys.ENTER) 回车键(Enter)
6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A) 7. send_keys(Keys.CONTROL,'c') 复制(Ctrl+C) 提示:以上方法就不一个一个讲解了,因为调用方法都一样;
2.3 案例
需求:打开注册A页面,完成以下操作
1). 输入用户名:admin1,暂停2秒,删除1
2). 全选用户名:admin,暂停2秒
3). 复制用户名:admin,暂停2秒
4). 粘贴到密码框
2.4 示例代码
# 定位用户名
element = driver.find_element_by_id("userA")
# 输入用户名
element.send_keys("admin1")
# 删除1
element.send_keys(Keys.BACK_SPACE)
# 全选
element.send_keys(Keys.CONTROL, 'a')
# 复制
element.send_keys(Keys.CONTROL, 'c')
# 粘贴
driver.find_element_by_id('passwordA').send_keys(Keys.CONTROL, 'v')# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys# 获取浏览器驱动对象
driver = webdriver.Firefox()
# 打开url
url = r"D:\web自动化素材\课堂素材\注册A.html"
driver.get(url)
"""目标:学习使用基于selenium完成键盘操作案例:1. 输入用户名admin12. 删除 1 3. 全选 用户名 "admin" Ctrl+A4. 复制 admin Ctrl+C5. 粘贴 将复制的admin粘贴到密码框分析:1. 导包 Keys2. 调用 send_keys(Keys.XXX,'a')"""
# 定位 用户名
username = driver.find_element_by_css_selector("#userA")
# 输入 admin1
username.send_keys("admin1")
sleep(2)
# 删除1
username.send_keys(Keys.BACK_SPACE)sleep(2)# 全选 admin Ctrl+a
username.send_keys(Keys.CONTROL, "a")
sleep(2)# 复制 Ctrl+c
username.send_keys(Keys.CONTROL, "c")
sleep(2)# 定位密码框 并执行 Ctrl+v
driver.find_element_by_css_selector("#passwordA").send_keys(Keys.CONTROL, "v")# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()
Selenium-鼠标和键盘操作相关推荐
- 从零开始编写Web自动化测试脚本(六)--鼠标、键盘操作
第一章 Selenium+WebDriver环境搭建 第二章 Selenium定位方式 第三章 元素常用属性 第四章 自动化中的三种等待 第五章 自动化浏览器设置及句柄.窗口切换操作 第六章 鼠标.键 ...
- 通过python里面的pyautogui自动化控制鼠标和键盘操作
PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautog ...
- 控制台模拟鼠标、键盘操作
控制台模拟鼠标.键盘操作 模拟鼠标.键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错).虽然这也跟CUI无关.本教程教会你如何让命令行模拟鼠标.键盘的操作. ...
- pyautogui自动化控制鼠标和键盘操作
pyautogui自动化控制鼠标和键盘操作 安装 pyautogui鼠标操作样例 pyautogui键盘操作样例 按键支持 提示信息 alert option password prompt 截屏 整 ...
- python实现自动按键_Python使用pyautogui模块实现自动化鼠标和键盘操作示例
本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作.分享给大家供大家参考,具体如下: 一.pyautogui模块简要说明 ## 使用 pyautogui 模块相关函数,可以模 ...
- python反恐精英基础版_cs客户端自动化控制鼠标和键盘操作,python+pyautogui
PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautog ...
- PyAutoGUI 自动控制鼠标和键盘操作(三个小案例)
PyAutoGUI 安装 用pip直接安装,可能错误不断,基本都是版本的问题,我是这样安装的,可以尝试一下,能不能成功 pip install -i https://pypi.doubanio.com ...
- 怎么检测用户多长时间没有鼠标与键盘操作
2019独角兽企业重金招聘Python工程师标准>>> 怎么检测用户多长时间没有鼠标与键盘操作 如何检测用户多长时间没有鼠标与键盘操作? 如何检测用户多长时间没有鼠标与键盘操作? ...
- 【AHK】实现无鼠标/纯键盘操作鼠标设置
鼠标手势用多了,肩部疼痛,而且尝试了一下,发现无鼠标纯键盘操作专注度更高. 以前觉得这玩意很无聊,有鼠标干嘛要在键盘上高鼠标??现在觉得虽然键盘确实就够操控电脑,但是如果有有点鼠标动作的加持,效率会更 ...
- Qt学习day04 资源和图像 目录和定时器 鼠标和键盘操作
一 资源和图像 1 资源编译器(rcc) 1)创建资源脚本(.qrc) vi test.qrc 0.jpg 2)将资源脚本中描述的图片转换为C++的源文件 rcc test.qrc -o qrc_te ...
最新文章
- 程序员做到这20条,成为人生赢家!
- foreach无法给外部变量赋值(Local variable decimal defined in an enclosing scope must be final or effectively )
- Centos6.5下升级Python版本
- C++即时通讯实现原理及常见问题
- javascript学习笔记_function
- idea中使用逆向工程----三部曲
- 第一步:python下PyGame的下载与安装
- 019-批量修改redis TTL和批量删除key
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (十)
- CS231n李飞飞计算机视觉 迁移学习之物体定位与检测上
- 存储珍贵的数据和资源的好选择,铁威马NAS F2-221折腾体验
- Android 模拟吹气实现吹风车效果
- java计算集合交差并集
- 李沐动手学深度学习V2-注意力评分函数
- 什么是光时域反射仪,OTDR的工作原理是什么
- 【PyTorch】偏置项 bias 与 Batch-Normalize
- 串口/U(A/S)RT(RS232/RS485/RS422协议等)
- 固定资产管理系统(论文+PPT+源码)
- 练习-Java输入输出之字节数据输入输出之综合练习
- 【MySQL】SQL执行顺序