python gui编程 自动化框架_python实现Gui 自动化测试 示例

【实例简介】安装如下(最好32位):

b32c9648a33c89d0fc406b043ba9f288.png

pip install pywinauto

pip install SendKeys

# SendKeys 需要VCForPython27.msi环境支持

SendKeys中特殊字符的键代码

BACKSPACE {BACKSPACE}、{BS} 或 {BKSP}

BREAK {BREAK}

CAPS LOCK {CAPSLOCK}

DEL 或 DELETE {DELETE} 或 {DEL}

DOWN ARROW(下箭头) {DOWN}

END {END}

ENTER {ENTER} 或 ~

ESC {ESC}

HELP {HELP}

HOME {HOME}

INS 或 INSERT {INSERT} 或 {INS}

LEFT ARROW(左箭头) {LEFT}

NUM LOCK {NUMLOCK}

PAGE DOWN {PGDN}

PAGE UP {PGUP}

PRINT SCREEN {PRTSC}(保留,以备将来使用)

RIGHT ARROW(右箭头) {RIGHT}

SCROLL LOCK {SCROLLLOCK}

TAB {TAB}

UP ARROW(上箭头) {UP}

F1 {F1}

F2 {F2}

F3 {F3}

F4 {F4}

F5 {F5}

F6 {F6}

F7 {F7}

F8 {F8}

F9 {F9}

F10 {F10}

F11 {F11}

F12 {F12}

F13 {F13}

F14 {F14}

F15 {F15}

F16 {F16}

数字盘加号 {ADD}

数字盘减号 {SUBTRACT}

数字盘乘号 {MULTIPLY}

数字盘除号 {DIVIDE}

【实例截图】

【核心代码】

#! /usr/bin/env python

#coding=utf8

'''

FuncName: johnny-pywinauto.py

Desc: study pywinauto

Date: 2016-10-10 14:30

Author: johnny

Home:http://blog.csdn.net/z_johnny

'''

from pywinauto import application

import SendKeys

import time

class Pywin(object):

"""

pywin framwork main class

tool_name : 程序名称,支持带路径

windows_name : 窗口名字

"""

SLEEP_TIME = 1

def __init__(self):

"""

初始化方法,初始化一个app

"""

self.app = application.Application()

def run(self, tool_name):

"""

启动应用程序

"""

self.app.start(tool_name)

time.sleep(1)

def connect(self, window_name):

"""

连接应用程序

app.connect_(path = r"c:\windows\system32\notepad.exe")

app.connect_(process = 2341)

app.connect_(handle = 0x010f0c)

"""

self.app.connect(title = window_name)

time.sleep(1)

def close(self, window_name):

"""

关闭应用程序

"""

self.app[window_name].Close()

time.sleep(1)

def max_window(self, window_name):

"""

最大化窗口

"""

self.app[window_name].Maximize()

time.sleep(1)

def menu_click(self, window_name, menulist):

"""

菜单点击

"""

self.app[window_name].MenuSelect(menulist)

time.sleep(1)

def input(self, window_name, controller, content):

"""

输入内容

"""

self.app[window_name][controller].TypeKeys(content)

time.sleep(1)

def click(self, window_name, controller):

"""

鼠标左键点击

example:

下面两个功能相同,下面支持正则表达式

app[u'关于“记事本”'][u'确定'].Click()

app.window_(title_re = u'关于“记事本”').window_(title_re = u'确定').Click()

"""

self.app[window_name][controller].Click()

time.sleep(1)

def double_click(self, window_name, controller, x = 0,y = 0):

"""

鼠标左键点击(双击)

"""

self.app[window_name][controller].DoubleClick(button = "left", pressed = "", coords = (x, y))

time.sleep(1)

def right_click(self, window_name, controller, order):

"""

鼠标右键点击,下移进行菜单选择

window_name : 窗口名

controller:区域名

order : 数字,第几个命令

"""

self.app[window_name][controller].RightClick()

for down in range(order):

SendKeys.SendKeys('{DOWN}')

time.sleep(0.5)

SendKeys.SendKeys('{ENTER}')

time.sleep(1)

if __name__ == "__main__":

app = Pywin()

# 记事本例子

tool_name = "notepad.exe"

# 通过Spy 获取window_name,即标题文本

window_name = u"无标题 - 记事本"

menulist = u"帮助->关于记事本"

# 通过Spy 获取controller,即窗口类名

controller = "Edit"

content = u"johnny"

window_name_new = content ".txt"

# 启动程序,记事本只能开一个

app.run(tool_name)

app.connect(window_name)

app.max_window(window_name)

app.menu_click(window_name,menulist)

app.click(u'关于记事本', u'确定')

app.input(window_name,controller,content)

# Ctrl a 全选

app.input(window_name,controller,"^a")

# 选择复制

app.right_click(window_name,controller,3)

#选择粘贴

app.right_click(window_name,controller,4)

SendKeys.SendKeys('{ENTER}')

# Ctrl v 粘贴

app.input(window_name,controller,"^v")

# Ctrl s 保存

app.input(window_name,controller,"^s")

# 输入文件名

app.input(u"另存为",controller,content)

# 保存

app.click(u"另存为","Button")

try:

app.click(u"确认另存为","Button")

except:

pass

finally:

app.close(window_name_new)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值