pywinauto使用心得总结

环境:python 3.11.0, pywinauto 0.6.8

辅助工具:inspect,MicrosoftSpy++,ViewWizard 3.5.3

import pywinauto

import time

import re

import win32gui

import win32clipboard as w

import win32con

import win32api

from pywinauto.keyboard import send_keys



def getWindowsNameStr():                                                                                                   #获取现有所有的窗口名称

    '''获取现有所有的窗口名称

    return:字符串格式返回所有窗口的名称

    '''

    windowsHandles = app.windows()

    WindowsName = []

    for i in range(StartWindowsNum):

         WindowsName.append(windowsHandles[i].window_text())

    # print(WindowsName)

    WindowsNameStr = ''.join(WindowsName)

    return WindowsNameStr



def getText():                                                                                                             #读取剪切板

    '''读取剪切板

    return:剪切板文字  

    '''

    w.OpenClipboard()

    d = w.GetClipboardData(win32con.CF_UNICODETEXT)

    w.CloseClipboard()

    return d

def setText(aString):                                                                                                      #把文字写入剪切板

    '''把文字写入剪切板

    '''

    w.OpenClipboard()

    w.EmptyClipboard()

    w.SetClipboardData(win32con.CF_UNICODETEXT, aString)    #CF_UNICODETEXT 能返回全部,CF_TEXT只能返回首字母,奇怪

    w.CloseClipboard()

def ConnectDUT(expectResult='Ready for Memtool Command'):                                                                           #connect产品,并判定是否连接成功

    '''烧录器连接产品并判定是否连接成功,若连接失败则关闭烧录程序主进程

    return: 如果打开ok,返回1;否则返回0

    '''

    try:                                                                                                                  

        dlg_main = app.window(title_re=r'Infineon - .*')    #重新获取主窗口的ID

        # dlg_main.print_control_identifiers()

        # 点击connect按键    Controller0.Core0 - Can't establish Connection to Target

        hwnd=dlg_main.handle

        # 设置窗口可见 最上层

        win32gui.ShowWindow(hwnd,1)

        time.sleep(0.01)

        dlg_main.child_window(title="Connect", class_name="Button").click_input()

        # 循环获取连接结果

        # Edit3 = dlg_main['Edit3']

        # Edit3Value = Edit3.text_block()

        # print("Connect Status:",Edit3Value)

        Edit3Value = ''

        i = 0

        while((i <= 20)&(expectResult not in Edit3Value)):

            Edit3 = dlg_main['Static2']

            Edit3Value = Edit3.window_text()

            i = i+1

            time.sleep(0.2)

            print(i,Edit3Value)

        # dlg_main.print_control_identifiers()

    except Exception as e:                                                                                                     #连接报错退出程序

        print(e)

        dlg_main.close()

    WindowsNameStr3 = getWindowsNameStr()     #重新遍历窗口

    if re.findall(r"Can't establish Connection to Target.*", WindowsNameStr3):                                                 # 判定是否有连接失败窗口,关闭此窗口

        dlg_ConnectErr = app.window(title_re=r".*Can't establish Connection to Target.*")              #重新获取连接错误窗口的ID

        dlg_ConnectErr['E&xit'].click_input()



    if(expectResult in Edit3Value):

        return 1

    else:

        print("Connect Status:",Edit3Value)

        return 0

程序未完

自动化处理关键方法:

1.*.print_control_identifiers() 获取*的所有的组件,然后查取对应的操作方法

2.有一些需要模拟键盘输入的部分高效的处理方法:黏贴处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值