基本信息
源码名称:python实现Gui 自动化测试 示例
源码大小:4.03KB
文件格式:.py
开发语言:Python
更新时间:2018-02-11
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

安装如下(最好32位):


pip install pywinauto
pip install SendKeys
# SendKeys 需要VCForPython27.msi环境支持  



VCForPython27(SendKeys需要).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)