将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. Spring在Web项目中的三种启动加载的配置

    在最近的项目中,使用到了spring相关的很多东西,有点把spring的配置给搞混了,从网上查到的资料以及整理了一下. 在Web项目中,启动spring容器的方式有三种,ContextLoaderLi ...

  2. DataGrid的ItemCreated和ItemDataBound以及合计平均行

    DataGrid为数据绑定控件,是重量级控件,臃肿,无华不实这么一个控件定位.如果做为管理系统,那么还是可以使用的. 本文只是为了记录ItemCreated和ItemDataBound两个事件的用法. ...

  3. JAVA白盒安全测试需要关注的API

    JAVA白盒安全测试需要关注的APIhttp://blog.csdn.net/testing_is_believing/article/details/19502167

  4. matlab的legend用法

    用Matlab画图时,有时候需要对各种图标进行标注,例如,用“+”代表A的运动情况,“*”代表B的运动情况. legend函数的基本用法是: LEGEND(string1,string2,string ...

  5. 之前做web性能优化的一些个人心得

    一个web项目后期的维护主要在于性能方面.数据吞吐量一旦增大各种bug都出来了.那些通过硬件<数据库分表,数据库主从分离,读写分离>等的一些手段此处就不多说了.本文主要在编码方面做一个性能 ...

  6. 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据

    http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...

  7. Java项目经验

    Java项目经验 转自CSDN. Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:1.掌握项目开发的基本步骤2.具备极强的面向对象的 ...

  8. ###《Effective STL》--Chapter7

    点击查看Evernote原文. #@author: gr #@date: 2014-08-31 #@email: forgerui@gmail.com Chapter7 在程序中使用STL Topic ...

  9. 第33条:用EnumMap代替序数索引

    有时候,会见到利用ordinal方法来索引数组的代码.例如下面这个简化的类,表示一种烹饪用的香草: public class Herb { public enum Type { ANNUAL, PER ...

  10. Java抽奖小程序

    package com.test; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; im ...