在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python语言基础 → python实现Gui 自动化测试 示例

python实现Gui 自动化测试 示例

Python语言基础

下载此实例
  • 开发语言:Python
  • 实例大小:4.03KB
  • 下载次数:1
  • 浏览次数:13
  • 发布时间:2018-02-11
  • 实例类别:Python语言基础
  • 发 布 人:霸道清晨
  • 所需积分:2
 相关标签: UI 测试 GUI

实例介绍

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

from clipboard


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)


标签: UI 测试 GUI

实例下载地址

python实现Gui 自动化测试 示例

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
;
报警
var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_4847253'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s13.cnzz.com/stat.php%3Fid%3D4847253' type='text/javascript'%3E%3C/script%3E"));