pywinauto二次封装(pywinnat.py)
将pywinauto常用方法进行封装,使得pywinauto用起来更简单
#头文件的引入
from pywinauto import application
from pywinauto import clipboard
import SendKeys
import win32api
import win32con
import os, sys, time#二次封装的类
class Pywin(object):
#=======================
# pywin framwork main class
#=======================SLEEP_TIME = 1#初始化方法,初始化一个appdef __init__(self):self.app = application.Application()#启动应用程序def run(self, tool_name):self.app.start_(tool_name)time.sleep(self.SLEEP_TIME)#连接应用程序def connect(self, tool_name):self.app.connect_(tool_name)time.sleep(self.SLEEP_TIME)#关闭应用程序def close(self, tool_name):window_name = window_name.decode('utf-8')self.app[window_name].Close()#最大化窗口def max_window(self, window_name):window_name = window_name.decode('utf-8')self.app[window_name].Maximize()time.sleep(self.SLEEP_TIME)#菜单点击def menu_click(self, window_name, menulist):window_name = window_name.decode('utf-8')menulist = menulist.decode('utf-8')self.app[window_name].MenuSelect(menulist)time.sleep(self.SLEEP_TIME)#输入内容def input(self, window_name, controller, content):window_name = window_name.decode('utf-8')controller = controller.decode('utf-8')content = content.decode('utf-8')self.app[window_name][controller].TypeKeys(content)time.sleep(self.SLEEP_TIME)#鼠标左键点击def click(self, window_name, controller, x = 0,y = 0):window_name = window_name.decode('utf-8')controller = controller.decode('utf-8')self.app[window_name][controller].Click(button = "left", pressed = "", coords = (x, y))time.sleep(self.SLEEP_TIME)#鼠标左键点击(双击)def double_click(self, window_name, controller, x = 0,y = 0):window_name = window_name.decode('utf-8')controller = controller.decode('utf-8')self.app[window_name][controller].DoubleClick(button = "left", pressed = "", coords = (x, y))time.sleep(self.SLEEP_TIME)#鼠标右键点击,菜单选择def right_click(self, window_name, controller, order):window_name = window_name.decode('utf-8')controller = controller.decode('utf-8')self.app[window_name][controller].RightClick()for down in range(order):SendKeys.SendKeys('{DOWN}')time.sleep(0.5)SendKeys.SendKeys('{ENTER}')time.sleep(self.SLEEP_TIME)#获取剪切板内容def getclipboard(self):return clipboard.GetData(format = 13)#使用win32点击屏幕def win32_left_click(self, (x, y), times):for count in range(times):win32api.SetCursorPos((x, y)) win32api.mouse_event(win32con.MOUSEEVqENTF_LEFTDOWN, 0, 0, 0,0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0,0)time.sleep(self.SLEEP_TIME)#使用win32点击屏幕def win32_right_click(self, (x, y), times):for count in range(times):win32api.SetCursorPos((x, y)) win32api.mouse_event(win32con.MOUSEEVqENTF_RIGHTDOWN, 0, 0, 0,0)win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0,0)time.sleep(self.SLEEP_TIME)if __name__ == '__main__':app = Pywin()#app.run('notepad.exe')
转载于:https://www.cnblogs.com/ybcao/p/5459915.html
pywinauto二次封装(pywinnat.py)相关推荐
- selenium + python自动化测试unittest框架学习(五)webdriver的二次封装
因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...
- 【vn.py学习笔记(二)】vn.py底层接口 学习笔记
[vn.py学习笔记(二)]vn.py底层接口 学习笔记 1 CTP API的工作原理 1.1 CTP介绍 1.2 API功能介绍 1.3 CTP API文件 1.4 API 通用规则 2 CTP A ...
- conan入门(二十):封装只包含头文件(header_only)的库示例
conan: 封装只包含头文件(header_only)的库示例 有的C/C++项目只包含头文件,不需要编译,对于这种情况如何封装为Conan的包呢? Conan官方文档 <Package sc ...
- Glide二次封装库的使用
更多代码可以查询本人GitHub:欢迎阅读,star点起来. Glide二次封装库源码 前言 为什么选择Glide? Glide 轻量级 速度快 可以根据所需加载图片的大小自动适配所需分辨率的图 支 ...
- 高德地图markevents_GitHub - mingxuWang/Map: 高德地图API二次封装
Map组件设计文档 组件设计目的 分析当前各业务方向(销售端.商城.数据可视化.TMS)内地图相关应用的地图功能使用情况,封装Map组件供给各业务向进行使用. 将高德地图API进行二次封装,降低地图相 ...
- Android 应用程序集成Google 登录及二次封装
谷歌登录API: https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...
- vue全家桶 ---axios的使用和二次封装
1.前提基础 本文在vue项目搭建的基础上,vue-router路由配置的基础上,对vue项目中axios的使用进行介绍. 2.axios的使用以及拦截器的设置. 安装axios cnpm i axi ...
- iOS安全之二次封装AFN并设置请求头/执行HTTPS加强安全
以前都是直接复制粘贴二次封装好的代码 , 现在都忘了怎么写 . 恰好当前项目要用到请求头 , 在网上学习了一下 , 统一敲了一遍 .自从到了现在公司 , 才发现要学的东西太多了 , 当然 , 有个好的 ...
- java二次封装_基于OKhttp+Rxjava2+Retrofit进行二次封装
概述 基于Retrofit进行二次封装,优雅的初始化设置.基于Okhttp拦截器和基础缓存,封装了无网络和其他所有场景的缓存策略支持,以及频繁调用请求的丢弃策略. 特性 1.基于Retrofit的二次 ...
最新文章
- 【转修正】sql server行版本控制的隔离级别
- axure中怎么做出固定首行_Excel:固定表头的方法
- 牛客练习赛26 E-树上路径 (树链剖分+线段树)
- 认识星座、八大行星的观察
- MySQL报错this is incompatible with sql_mode=only_full_group_by
- sencha touch 在安卓中横屏、竖屏切换 应用崩溃问题
- 抗住百万人直播、被联合国推荐,起底飞书技术演进之路!
- ElasticSearch的基本用法与集群搭建
- 洛谷——P1652 圆
- linux dnf配置文件,如何为CentOS 8配置本地Yum/DNF存储库
- 机械专业热门选题 论文+图纸+PPT
- Python 入门基础
- 一种RGD-全氟化碳纳米乳MRI显影剂的制备方法
- win10系统去除桌面图标小箭头
- js 绘画js 绘画路径_绘画是一种技能,而不是才能
- 5.。。。。。。。。。。。。
- c语言求字符串转换成双精度_C语言如何输出双精度浮点型数据
- 学习IPD集成产品开发(转载整理)
- Apriori算法详解及手写案例
- xp计算机怎么共享网络,windows XP下如何实现共享上网的方法
热门文章
- (摘)Excel 2007查询操作中的函数应用
- kibana7.10.1基本操作(饼图+直方图)
- matlab绘制以Hz为单位的bode图
- 编译hbase2.2.4+hadoop3.1.2
- 天天生鲜的用户登录机制和redis的作用
- mysql8碰到 ERROR 1064 (42000)
- the computational graph needed to compute the outputs报错解决
- JEPaas代码_((列表)输入字段值而计算
- 企业门户项目实施方法论(IPS方法简介),适用于企业门户项目的项目管理方法论(上篇)...
- DAS、SAN和NAS三种服务器存储方式