python自动化工具之pywinauto(一个实例)结合pyuserinput

以下是pywinauto使用指南。这个窗口句柄可以在Spy++中查看 Microsoft Spy++(查看窗口句柄) 10.00.30319 官方最新绿色版

python自动化工具之pywinauto(一)

python自动化工具之pywinauto(二)

python自动化工具之pywinauto(三)

 

二、pyuserinput使用方法

//导入模块

import pymouse,pykeyboard,os,sys
from pymouse import *
from pykeyboard import PyKeyboard
//分别定义一个实例 
m = PyMouse() 
k = PyKeyboard()

鼠标操作: 
m.click(x,y,button,n) –鼠标点击 
x,y –是坐标位置 
buttong –1表示左键,2表示点击右键 
n –点击次数,默认是1次,2表示双击

m.move(x,y) –鼠标移动到坐标(x,y)

x_dim, y_dim = m.screen_size() –获得屏幕尺寸

键盘操作:

k.type_string(‘Hello, World!’) –模拟键盘输入字符串 
k.press_key(‘H’) –模拟键盘按H键 
k.release_key(‘H’) –模拟键盘松开H键 
k.tap_key(“H”) –模拟点击H键 
k.tap_key(‘H’,n=2,interval=5) –模拟点击H键,2次,每次间隔5秒 
k.tap_key(k.function_keys[5]) –点击功能键F5 
k.tap_key(k.numpad_keys[5],3) –点击小键盘5,3次

联合按键模拟 
例如同时按alt+tab键盘 
k.press_key(k.alt_key) –按住alt键 
k.tap_key(k.tab_key) –点击tab键 
k.release_key(k.alt_key) –松开alt键

 

======

以下是记事本操作实例。

 

  1 #! /usr/bin/env python
  2 
  3 
  4 '''
  5 FuncName: johnny-pywinauto.py
  6 Desc: study pywinauto
  7 Date: 2016-10-10 14:30
  8 Author: johnny
  9 Home:http://blog.csdn.net/z_johnny
 10 '''
 11 
 12 from pywinauto import application
 13 from pykeyboard import PyKeyboard
 14 import time
 15 
 16 class Pywin(object):
 17     """
 18     pywin framwork main class
 19     tool_name : 程序名称,支持带路径
 20     windows_name : 窗口名字
 21     """
 22     SLEEP_TIME = 1
 23 
 24     def __init__(self):
 25         """
 26         初始化方法,初始化一个app
 27         """
 28         self.app = application.Application()
 29 
 30     def run(self, tool_name):
 31         """
 32         启动应用程序
 33         """
 34 
 35         self.app.start(tool_name)
 36         time.sleep(1)
 37 
 38     def connect(self, window_name):
 39         """
 40         连接应用程序
 41         app.connect_(path = r"c:\windows\system32\notepad.exe")
 42         app.connect_(process = 2341)
 43         app.connect_(handle = 0x010f0c)
 44         """
 45         self.app.connect(title = window_name)
 46         time.sleep(1)
 47 
 48     def close(self, window_name):
 49         """
 50         关闭应用程序
 51         """
 52         self.app[window_name].Close()
 53         time.sleep(1)
 54 
 55     def max_window(self, window_name):
 56         """
 57         最大化窗口
 58         """
 59         self.app[window_name].Maximize()
 60         time.sleep(1)
 61 
 62     def menu_click(self, window_name, menulist):
 63         """
 64         菜单点击
 65         """
 66         self.app[window_name].MenuSelect(menulist)
 67         time.sleep(1)
 68 
 69     def input(self, window_name, controller, content):
 70         """
 71         输入内容
 72         """
 73         self.app[window_name][controller].TypeKeys(content)
 74         time.sleep(1)
 75 
 76     def click(self, window_name, controller):
 77         """
 78         鼠标左键点击
 79         example:
 80         下面两个功能相同,下面支持正则表达式
 81         app[u'关于“记事本”'][u'确定'].Click()
 82         app.window_(title_re = u'关于“记事本”').window_(title_re = u'确定').Click()
 83         """
 84         self.app[window_name][controller].Click()
 85         time.sleep(1)
 86 
 87     def double_click(self, window_name, controller, x = 0,y = 0):
 88         """
 89         鼠标左键点击(双击)
 90         """
 91         self.app[window_name][controller].DoubleClick(button = "left", pressed = "",  coords = (x, y))
 92         time.sleep(1)
 93 
 94     def right_click(self, window_name, controller, order):
 95         """
 96         鼠标右键点击,下移进行菜单选择
 97         window_name : 窗口名
 98         controller:区域名
 99         order : 数字,第几个命令
100         """
101         self.app[window_name][controller].RightClick()
102         k = PyKeyboard()
103         for down in range(order):
104             k.press_key(k.down_key)
105             time.sleep(0.5)
106         k.press_key(k.enter_key)
107         time.sleep(1)
108 
109 if __name__ ==  "__main__":
110     app = Pywin()
111     # 记事本例子
112     tool_name = "notepad.exe"
113     # 通过Spy++ 获取window_name,即标题文本
114     window_name = u"无标题 - 记事本"
115     menulist = u"帮助->关于记事本"
116     # 通过Spy++ 获取controller,即窗口类名
117     controller = "Edit"
118     content = u"johnny"
119     window_name_new = content + ".txt"
120     # 启动程序,记事本只能开一个
121     app.run(tool_name)
122 
123     app.connect(window_name)
124 
125     # app.max_window(window_name)
126     app.menu_click(window_name,menulist)
127     app.click(u'关于记事本', u'确定')
128     app.input(window_name,controller,content)
129     # Ctrl + a 全选
130     app.input(window_name,controller,"^a")
131     # 选择复制
132     app.right_click(window_name,controller,3)
133     #选择粘贴
134     app.right_click(window_name,controller,4)
135     k=PyKeyboard()
136     k.press_key(k.enter_key)
137     # Ctrl + v 粘贴
138     app.input(window_name,controller,"^v")
139     # Ctrl + s 保存
140     app.input(window_name,controller,"^s")
141     # 输入文件名
142     app.input(u"另存为",controller,content)
143     # 保存
144     app.click(u"另存为","Button")
145     try:
146         app.click(u"确认另存为","Button")
147     except:
148         pass
149     finally:
150         app.close(window_name_new)

 

posted @ 2018-06-27 19:00  mapuboy  阅读(12304)  评论(0编辑  收藏  举报