将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. c/c++将整数转换为字符串

    #include <iostream> using namespace std; int main(int argc, char **argv) { ; iint i,j; ],e[]; ...

  2. 解析搜狗词库(python)

    #!/usr/bin/python # -*- coding: utf-8 -*- import struct import sys import binascii import pdb #搜狗的sc ...

  3. ORM之PetaPoco入门(一)--Petapoco简介

    1. ORM概括 1.1. ORM简介 ORM 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应 ...

  4. WebSocket实时异步通信

    WebSocket实时异步通信 [一]WebSocket简介 WebSocket是HTML5推出一个协议规范,用来B/S模式中服务器端和客户端之间进行实时异步通信. 众所周知,传统的HTTP协议中,服 ...

  5. 介绍一些适用于 Web 开发者的 Atom 编辑器插件

    Atom 的社区很繁荣,有着丰富的扩展/插件(packages).安装 Atom 的 Package 非常简单,可以在编辑器的偏好设置里面安装,也可以在命令行中使用 apm 命令来安装. 在介绍适用于 ...

  6. 在.bashrc中,使用python获取本机IP地址(现在只支持wlan)

    其实最好的办法是写个单独的脚本去查找IP,但是如果实在不愿意单写一个脚本文件,也可以直接将代码嵌入.bashrc中 在~/.bashrc下加入下面这行代码即可使用python获取本机的wlan的IP地 ...

  7. 兼容IE6/IE7/IE8/FireFox的css hack

    兼容IE6/IE7/IE8/FireFox的css hack .color{ background-color: #CC00FF; background-color: #FF00009; *backg ...

  8. ASP中双引号单引号和&连接符使用技巧

    ASP中双引号单引号和&连接符使用技巧 一.ASP中处在双引号中的可以是任意的字符.字符串,HTML代码 1.<%response.write ("I am here" ...

  9. 在C#中创建类型

    重载构造函数: using System; public class Wine { public decimal Price; public int Year; public Wine (decima ...

  10. Java 简单算法--打印乘法口诀(只使用一次循环)

    package cn.magicdu.algorithm; /** * 九九乘法口诀表 * * @author xiaoduc * */ public class NineNineMulitTable ...