将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
#初始化方法,初始化一个app
def __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')

pywinauto二次封装(pywinnat.py)的更多相关文章

  1. HtmlTestRunner二次封装(TestRunner.py)

    将HtmlTestRunner进行二次封装,使报告生成的更方便 import HTMLTestRunner import unittest import time, os class TestRunn ...

  2. Python_selenium二次封装selenium的几个方法

    Python_selenium二次封装selenium的几个方法 将常用的几个webdriver方法封装到自己写的一个类中去,此实例中是将"浏览器后退.浏览器前进.打开站点和关闭浏览器&qu ...

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

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

  4. Python+Selenium中级篇之-二次封装Selenium中几个方法

    本文来介绍,如何把常用的几个webdriver的方法封装到自己写的一个类中去,这个封装过程叫二次封装Selenium方法.我们把打开站点,浏览器前进和后退,关闭和退出浏览器这这个方法封装到一个新写的类 ...

  5. web自动化针对PO模式进行二次封装之basepage

    在PO模式当中,我们做到了页面对象与测试用例的分离,但在页面对象编写时,我们仍然还有优化的空间.页面对象有一些共同的基本操作,可以封装起来,并可以在基本操作当中加上日志和异常截图的处理.比如说我们在查 ...

  6. DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集

    复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...

  7. drf序列化高级、自定义只读只写、序列化覆盖字段、二次封装Response、数据库查询优化(断关联)、十大接口、视图家族

    目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 系列化类其他配置(了解) 十大接口 BaseSer ...

  8. 二次封装 Reponse,视图家族

    复习 """ 1.整体修改与局部修改 # 序列化 ser_obj = ModelSerializer(model_obj) # 反序列化,save() => cre ...

  9. Python笔记_第四篇_高阶编程_二次封装

    1.二次封装: 二次封装其实就是对一个类或者一个方法进行二次的改造增加新的功能. 2.一个类的二次封装: 我们以一个进程为例,我们把Process这个库进行二次封装,增加一些功能,在调用. thoma ...

随机推荐

  1. 深入理解计算机系统第二版习题解答CSAPP 2.16

    填写下表,说明不同移位运算对单字节数的影响. x x<<3 x>>2(逻辑) x>>2(算术) 十六进制 二进制 二进制 十六进制 二进制 十六进制 二进制 十六进 ...

  2. centos安装crontab:

    # yum install vixie-cron # yum install crontabs /sbin/service crond start //启动服务/sbin/service crond ...

  3. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  4. Spring 的@Controller 和@RestController的区别

    @RestController Spring 4.0中新增的特性 @RestController 继承自 @Controller,相当于@ResponseBody + @Controller   1. ...

  5. 【汉诺塔问题】UVa 10795 - A Different Task

    [经典汉诺塔问题] 汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A.B.C,A座上有64个盘子,盘子大小不等,大的在下,小的在上.有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动 ...

  6. JDBC的几个步骤

    JDBC:JAVA访问数据库的解决方案.几个步骤:1.加载驱动类; 2.与数据库建立连接:         3.执行SQL语句   4.处理结果集 5.关闭连接1. 第一步:加载驱动类: 需要注意:不 ...

  7. smarty实现缓存

    首先需要在mySmarty中添加配置信息,开启缓存,设置缓存文件存放目录,设置缓存时间缓存可以实现减少访问数据库,减轻数据库压力,访问一次数据库,形成静态页面,下次直接调用这个页面,也可以用nocac ...

  8. Android之 Fragment

    什么是Fragment: Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这个模块有自己的布局, ...

  9. mysqld-nt: Out of memory (Needed 1677720 bytes)解决方法

    http://www.jb51.net/article/58726.htm 今天发现网站有点慢,发现mysql日志中提示mysqld-nt: Out of memory (Needed 1677720 ...

  10. HTML招聘简历解析

    使用 jsoup 对 HTML 文档进行解析和操作 Jsoup解析html简历与dom4j解析xml是一个道理:首先必须知道html的格式,不知道格式,无法解析.根据格式,再将需要的内容通过下面的方法 ...