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-鼠标和键盘操作相关推荐

  1. 从零开始编写Web自动化测试脚本(六)--鼠标、键盘操作

    第一章 Selenium+WebDriver环境搭建 第二章 Selenium定位方式 第三章 元素常用属性 第四章 自动化中的三种等待 第五章 自动化浏览器设置及句柄.窗口切换操作 第六章 鼠标.键 ...

  2. 通过python里面的pyautogui自动化控制鼠标和键盘操作

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautog ...

  3. 控制台模拟鼠标、键盘操作

    控制台模拟鼠标.键盘操作 模拟鼠标.键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错).虽然这也跟CUI无关.本教程教会你如何让命令行模拟鼠标.键盘的操作. ...

  4. pyautogui自动化控制鼠标和键盘操作

    pyautogui自动化控制鼠标和键盘操作 安装 pyautogui鼠标操作样例 pyautogui键盘操作样例 按键支持 提示信息 alert option password prompt 截屏 整 ...

  5. python实现自动按键_Python使用pyautogui模块实现自动化鼠标和键盘操作示例

    本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作.分享给大家供大家参考,具体如下: 一.pyautogui模块简要说明 ## 使用 pyautogui 模块相关函数,可以模 ...

  6. python反恐精英基础版_cs客户端自动化控制鼠标和键盘操作,python+pyautogui

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautog ...

  7. PyAutoGUI 自动控制鼠标和键盘操作(三个小案例)

    PyAutoGUI 安装 用pip直接安装,可能错误不断,基本都是版本的问题,我是这样安装的,可以尝试一下,能不能成功 pip install -i https://pypi.doubanio.com ...

  8. 怎么检测用户多长时间没有鼠标与键盘操作

    2019独角兽企业重金招聘Python工程师标准>>> 怎么检测用户多长时间没有鼠标与键盘操作 如何检测用户多长时间没有鼠标与键盘操作? 如何检测用户多长时间没有鼠标与键盘操作?   ...

  9. 【AHK】实现无鼠标/纯键盘操作鼠标设置

    鼠标手势用多了,肩部疼痛,而且尝试了一下,发现无鼠标纯键盘操作专注度更高. 以前觉得这玩意很无聊,有鼠标干嘛要在键盘上高鼠标??现在觉得虽然键盘确实就够操控电脑,但是如果有有点鼠标动作的加持,效率会更 ...

  10. Qt学习day04 资源和图像 目录和定时器 鼠标和键盘操作

    一 资源和图像 1 资源编译器(rcc) 1)创建资源脚本(.qrc) vi test.qrc 0.jpg 2)将资源脚本中描述的图片转换为C++的源文件 rcc test.qrc -o qrc_te ...

最新文章

  1. 程序员做到这20条,成为人生赢家!
  2. foreach无法给外部变量赋值(Local variable decimal defined in an enclosing scope must be final or effectively )
  3. Centos6.5下升级Python版本
  4. C++即时通讯实现原理及常见问题
  5. javascript学习笔记_function
  6. idea中使用逆向工程----三部曲
  7. 第一步:python下PyGame的下载与安装
  8. 019-批量修改redis TTL和批量删除key
  9. 自然语言交流系统 phxnet团队 创新实训 个人博客 (十)
  10. CS231n李飞飞计算机视觉 迁移学习之物体定位与检测上
  11. 存储珍贵的数据和资源的好选择,铁威马NAS F2-221折腾体验
  12. Android 模拟吹气实现吹风车效果
  13. java计算集合交差并集
  14. 李沐动手学深度学习V2-注意力评分函数
  15. 什么是光时域反射仪,OTDR的工作原理是什么
  16. 【PyTorch】偏置项 bias 与 Batch-Normalize
  17. 串口/U(A/S)RT(RS232/RS485/RS422协议等)
  18. 固定资产管理系统(论文+PPT+源码)
  19. 练习-Java输入输出之字节数据输入输出之综合练习
  20. 【MySQL】SQL执行顺序

热门文章

  1. 一周市场摘抄20210208
  2. docker一键部署springboot项目(三)
  3. php实现支付宝二维码支付
  4. Error instantiating servlet class com.web.SelectAllServlet 所有的servlet都不能运行,终于找到解决办法
  5. 科罗拉多州奥罗拉市用基于磁盘的ExaGrid系统取代磁带备份
  6. S3C2440裸机实战 之一 创建初始工程
  7. RV1126 调试记录
  8. 贪心问题(Python代码实现)——磁带最优存储问题
  9. 微信小程序拼图游戏(有效果图)
  10. 随便谈谈IT行业的几个定律