在实际的自动化代码调试过程中,往往Selenium提供的方法不能满足于自动化任务,例如定位某个按钮要完成点击操作,定位正确但就是无法完成点击,此时如果掌握模拟键盘的方法便可以为我们的自动化提供很大的帮助。

安装Pywin32

要模拟键盘操作,需要先为Python安装相关模块,启动命令行,然后在命令行执行命令“pip install –U pywin32”,执行结果如下

C:\Users\davieyang>pip install pywin32
Collecting pywin32Using cached https://files.pythonhosted.org/packages/a3/8a/eada1e7990202cd27e58eca2a278c344fef190759bbdc8f8f0eb6abeca9c/pywin32-224-cp37-cp37m-win_amd64.whl
Installing collected packages: pywin32
Successfully installed pywin32-224

看到Successfully installed pywin32-xxx则表示安装成功。

无法引入模块

如果使用pip安装后,出现无法将win32apiwin32con引入项目的情况,还可以直接下载安装文件,下载地址为
pywin32,必须指出的是在这个地址只能找到Build 222之前的版本,新的版本移步到了pywin32新,文件是.exe的,直接双击安装即可

方法封装

在PO项目中的Util路径下新建一个Python文件并命名为Keyboard_Simulation,然后在文件中写入如下代码。

# 用于实现模拟键盘单个或多个组合键操作
# encoding = utf-8
import win32api
import win32con
class Simulate_Keyboard:"""定义字典,字典内容为键盘上的按键与VkCode的键值对"""VK_CODE = {'backspace': 0x08,'tab': 0x09,'clear': 0x0C,'enter': 0x0D,'shift': 0x10,'ctrl': 0x11,'alt': 0x12,'pause': 0x13,'caps_lock': 0x14,'esc': 0x1B,'spacebar': 0x20,'page_up': 0x21,'page_down': 0x22,'end': 0x23,'home': 0x24,'left_arrow': 0x25,'up_arrow': 0x26,'right_arrow': 0x27,'down_arrow': 0x28,'select': 0x29,'print': 0x2A,'execute': 0x2B,'print_screen': 0x2C,'ins': 0x2D,'del': 0x2E,'help': 0x2F,'0': 0x30,'1': 0x31,'2': 0x32,'3': 0x33,'4': 0x34,'5': 0x35,'6': 0x36,'7': 0x37,'8': 0x38,'9': 0x39,'a': 0x41,'b': 0x42,'c': 0x43,'d': 0x44,'e': 0x45,'f': 0x46,'g': 0x47,'h': 0x48,'i': 0x49,'j': 0x4A,'k': 0x4B,'l': 0x4C,'m': 0x4D,'n': 0x4E,'o': 0x4F,'p': 0x50,'q': 0x51,'r': 0x52,'s': 0x53,'t': 0x54,'u': 0x55,'v': 0x56,'w': 0x57,'x': 0x58,'y': 0x59,'z': 0x5A,'numpad_0': 0x60,'numpad_1': 0x61,'numpad_2': 0x62,'numpad_3': 0x63,'numpad_4': 0x64,'numpad_5': 0x65,'numpad_6': 0x66,'numpad_7': 0x67,'numpad_8': 0x68,'numpad_9': 0x69,'multiply_key': 0x6A,'add_key': 0x6B,'separator_key': 0x6C,'subtract_key': 0x6D,'decimal_key': 0x6E,'divide_key': 0x6F,'F1': 0x70,'F2': 0x71,'F3': 0x72,'F4': 0x73,'F5': 0x74,'F6': 0x75,'F7': 0x76,'F8': 0x77,'F9': 0x78,'F10': 0x79,'F11': 0x7A,'F12': 0x7B,'num_lock': 0x90,'scroll_lock': 0x91,'left_shift': 0xA0,'right_shift ': 0xA1,'left_control': 0xA2,'right_control': 0xA3,'left_menu': 0xA4,'right_menu': 0xA5,'browser_back': 0xA6,'browser_forward': 0xA7,'browser_refresh': 0xA8,'browser_stop': 0xA9,'browser_search': 0xAA,'browser_favorites': 0xAB,'browser_start_and_home': 0xAC,'volume_mute': 0xAD,'volume_Down': 0xAE,'volume_up': 0xAF,'next_track': 0xB0,'previous_track': 0xB1,'stop_media': 0xB2,'play/pause_media': 0xB3,'start_mail': 0xB4,'select_media': 0xB5,'start_application_1': 0xB6,'start_application_2': 0xB7,'attn_key': 0xF6,'crsel_key': 0xF7,'exsel_key': 0xF8,'play_key': 0xFA,'zoom_key': 0xFB,'clear_key': 0xFE,'+': 0xBB,',': 0xBC,'-': 0xBD,'.': 0xBE,'/': 0xBF,'`': 0xC0,';': 0xBA,'[': 0xDB,'\\': 0xDC,']': 0xDD,"'": 0xDE,}@staticmethoddef press_key (keyName):# 按下按键win32api.keybd_event(Simulate_Keyboard.VK_CODE[keyName], 0, 0, 0)@staticmethoddef release_key (keyName):# 释放按键win32api.keybd_event(Simulate_Keyboard
.VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)@staticmethoddef click_onekey(key):# 模拟单个按键Simulate_Keyboard.press_key(key)Simulate_Keyboard.release_key(key)@staticmethoddef click_twokey(first_key, second_key):# 模拟两个组合键Simulate_Keyboard.press_key(first_key)Simulate_Keyboard.press_key(second_key)Simulate_Keyboard.release_key(second_key)Simulate_Keyboard.release_key(first_key)

方法调用

当需要调用其中的方法的时候,将其引入到测试代码中,调用类中的方法时,将想要的按键传给相应方法即可,在test_advanced_application文件中新增如下测试方法,验证封装的方法是否可用,代码如下所示。

from Util.Keyboard_Simulation import Simulate_Keyboard
def test_simulate_keyboard(self):Simulate_Keyboard.oneKey('enter')Simulate_Keyboard.oneKey('ctrl', 'v')Simulate_Keyboard.oneKey('enter')

Python自动化测试系列[v1.0.0][Win32模拟键盘]相关推荐

  1. Java自动化测试系列[v1.0.0][TestNG测试开发环境配置]

    基于之前写的一篇文章Java自动化测试系列[v1.0.0][Maven开发环境]的基础上,阐述如何配置单元测试框架TestNG的测试开发环境 创建Maven项目 启动IDEA,点击Create New ...

  2. JavaApp自动化测试系列[v1.0.0][Appium开发环境搭建]

    Appium 是一个开源工具,用于自动化 iOS 手机. Android 手机和 Windows 桌面平台上的原生.移动 Web 和混合应用.「原生应用」指那些用 iOS. Android 或者 Wi ...

  3. selenium+python自动化测试系列(一):登录

        最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台 ...

  4. Appium python自动化测试系列之Capability介绍(五)

    ​5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...

  5. 【python】win32模拟键盘实现游戏内操作

    直接贴代码,游戏以warframe,也就是国服的星际战甲做为例子 warframe已经修掉鱼叉挂机了,故写此代码 import win32api import win32con import rand ...

  6. Java自动化测试系列[v1.0.0][自动化测试框架理念]

    自动化测试含义 在自动化测试领域内流传着一个说法:单元测试才是自动化测试的核心,在自动化测试里,无论框架何等完美都不可能脱离单元测试,单元测试将会是自动化测试里最小的单位,把它看作单位一,若干个单位一 ...

  7. Java自动化测试系列[v1.0.0][ZTestReport测试报告]

    获取报告框架 ZTestReport 源码Clone地址为ZTestReport ,其中ZTestReport.java和其template是我们需要的关键 修改报告框架 根据我的需要,在源码基础上进 ...

  8. selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传

    AutoIt使用简单说明 AutoIt的安装这里就不在啰嗦,可以参考AutoIt安装或者自行搜索解决. 第一步:定位上传文件路径的文本框 这里举例说明,如何定位?如图 这里我们看到上传文件的类型是bu ...

  9. 【Python自动化测试32】App自动化环境搭建

    文章目录 一.前言 二.安装与环境搭建教学 2.1 环境依赖 2.2 appium程序安装 2.3 appium-python-client 2.4 模拟器安装 2.5 java jdk安装 2.6 ...

最新文章

  1. Spark运行模式Local+Standalone+Yarn+mesos
  2. SAP中供应商确认功能的应用分析
  3. 特征值 奇异值分解 概念整理
  4. 流水灯实例,点亮发光管LED并闪烁(查表操作)
  5. C语言判断二叉树是否为二叉搜索树(附完整源码)
  6. F# ≥ C#(活动模式 和枚举)
  7. windows10大瘦身 - Chrome文件夹下可以删除的临时js文件
  8. 2、C#基础 - Visual Studio 的版本选择和下载
  9. 【Qt教程】1.11 - Qt5 标准对话框QMessageBox(关于、错误、信息、警告、问题、颜色、字体、文件对话框)
  10. mysql数据库基础语句讲解
  11. 一文读懂Soul上市:注册用户破亿,上市是福还是祸?
  12. fifa15服务器位置,FIFA15球队战术位置技巧
  13. 推荐9款最佳的编程字体
  14. Notion学习笔记(一):用Notion写markdown
  15. 正反馈、负反馈傻傻分不清?看这篇电路深度讲解
  16. 产品读书《麦肯锡工作法:麦肯锡精英的39个工作习惯》
  17. 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信监息提取、测
  18. 如何解决hao.123.com的挟持网页(篡改网站主页)
  19. 浅谈用企业微信生态做私域流量运营的策略!
  20. 搭建网站是进行创业的第一步

热门文章

  1. Python下载网易云歌单歌曲,这个脚本你给多少分!
  2. 我做程序员的那些日子
  3. 使用highcharts做地图统计
  4. linux-DNS服务器的搭建
  5. python画极坐标图_Python matplotlib绘制极坐标图
  6. 动态规划之01背包问题讲解
  7. 如何安装Ubuntu 20.04 LTS服务器的图文教程
  8. C1083: 无法打开包括文件: plugin.moc: No such file or directory
  9. Android学习网站推荐
  10. 2022长安杯复盘——lucid凡