将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)相关推荐

  1. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  2. 【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 ...

  3. conan入门(二十):封装只包含头文件(header_only)的库示例

    conan: 封装只包含头文件(header_only)的库示例 有的C/C++项目只包含头文件,不需要编译,对于这种情况如何封装为Conan的包呢? Conan官方文档 <Package sc ...

  4. Glide二次封装库的使用

    更多代码可以查询本人GitHub:欢迎阅读,star点起来.  Glide二次封装库源码 前言 为什么选择Glide? Glide 轻量级 速度快 可以根据所需加载图片的大小自动适配所需分辨率的图 支 ...

  5. 高德地图markevents_GitHub - mingxuWang/Map: 高德地图API二次封装

    Map组件设计文档 组件设计目的 分析当前各业务方向(销售端.商城.数据可视化.TMS)内地图相关应用的地图功能使用情况,封装Map组件供给各业务向进行使用. 将高德地图API进行二次封装,降低地图相 ...

  6. Android 应用程序集成Google 登录及二次封装

    谷歌登录API:  https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...

  7. vue全家桶 ---axios的使用和二次封装

    1.前提基础 本文在vue项目搭建的基础上,vue-router路由配置的基础上,对vue项目中axios的使用进行介绍. 2.axios的使用以及拦截器的设置. 安装axios cnpm i axi ...

  8. iOS安全之二次封装AFN并设置请求头/执行HTTPS加强安全

    以前都是直接复制粘贴二次封装好的代码 , 现在都忘了怎么写 . 恰好当前项目要用到请求头 , 在网上学习了一下 , 统一敲了一遍 .自从到了现在公司 , 才发现要学的东西太多了 , 当然 , 有个好的 ...

  9. java二次封装_基于OKhttp+Rxjava2+Retrofit进行二次封装

    概述 基于Retrofit进行二次封装,优雅的初始化设置.基于Okhttp拦截器和基础缓存,封装了无网络和其他所有场景的缓存策略支持,以及频繁调用请求的丢弃策略. 特性 1.基于Retrofit的二次 ...

最新文章

  1. 【转修正】sql server行版本控制的隔离级别
  2. axure中怎么做出固定首行_Excel:固定表头的方法
  3. 牛客练习赛26 E-树上路径 (树链剖分+线段树)
  4. 认识星座、八大行星的观察
  5. MySQL报错this is incompatible with sql_mode=only_full_group_by
  6. sencha touch 在安卓中横屏、竖屏切换 应用崩溃问题
  7. 抗住百万人直播、被联合国推荐,起底飞书技术演进之路!
  8. ElasticSearch的基本用法与集群搭建
  9. 洛谷——P1652 圆
  10. linux dnf配置文件,如何为CentOS 8配置本地Yum/DNF存储库
  11. 机械专业热门选题 论文+图纸+PPT
  12. Python 入门基础
  13. 一种RGD-全氟化碳纳米乳MRI显影剂的制备方法
  14. win10系统去除桌面图标小箭头
  15. js 绘画js 绘画路径_绘画是一种技能,而不是才能
  16. 5.。。。。。。。。。。。。
  17. c语言求字符串转换成双精度_C语言如何输出双精度浮点型数据
  18. 学习IPD集成产品开发(转载整理)
  19. Apriori算法详解及手写案例
  20. xp计算机怎么共享网络,windows XP下如何实现共享上网的方法

热门文章

  1. (摘)Excel 2007查询操作中的函数应用
  2. kibana7.10.1基本操作(饼图+直方图)
  3. matlab绘制以Hz为单位的bode图
  4. 编译hbase2.2.4+hadoop3.1.2
  5. 天天生鲜的用户登录机制和redis的作用
  6. mysql8碰到 ERROR 1064 (42000)
  7. the computational graph needed to compute the outputs报错解决
  8. JEPaas代码_((列表)输入字段值而计算
  9. 企业门户项目实施方法论(IPS方法简介),适用于企业门户项目的项目管理方法论(上篇)...
  10. DAS、SAN和NAS三种服务器存储方式