美文网首页
最棒的windows自动化测试工具 pywinauto 速成

最棒的windows自动化测试工具 pywinauto 速成

作者: limus | 来源:发表于2020-08-28 16:32 被阅读0次

    如果说PyAutoGUI 是个黑盒自动化测试windows应用操作工具,不用知道应用内部的结构,只需要知道位置,直接上键盘鼠标;
    那么Pywinauto就是白盒自动化测试工具,他的操作精细到应用里面的每一个细小的控件

    从一个例子开始

    这里先上一个简单例子:打开资源管理器explorer . 右键点开 "common files"
    代码如下,简单吧!

    from pywinauto import Desktop, Application
    1、启动程序
    Application().start('explorer.exe "C:\\Program Files"')  
    2、找到进程, 注意title 可以是模糊匹配
    app = Application(backend="uia").connect(path="explorer.exe", title="Program F")    
    3、找到主窗口-title模糊匹配
    wnd = app['Program']  
    4、打印所有控件
    wnd.print_control_identifiers()  
    ================ 具体应用上面稍微改一下程序名================================
    5、定位控件
    common_files=wnd['common files']  定位UI控件方法1
    common_files=wnd.ListItem5           定位UI控件方法2
    common_files=wnd['Common FilesLis']  定位UI控件方法3
    6、动作
    common_files.right_click_input()     右击 ui控件
    

    运行结果如下:


    image.png

    控件定位方法

    那程序中的关键,控件是如何定位的呢?

    1、打印所有的控件信息
    我们无需使用inspect.exe , spy++ 只需要执行下面语句,就可以吧所有控件信息打印出来

    wnd.print_control_identifiers() 
    

    2、然后找到结果中的控件信息,common files 为:

       |    |    |    |    | ListItem - 'Common Files'    (L370, T291, R944, B313)
       |    |    |    |    | ['Common FilesListItem', 'ListItem5', 'Common Files']
    
    ['Common FilesListItem', 'ListItem5', 'Common Files']
    

    我们可以使用这3个值中的任意一个来定位控件,而且支持模糊匹配。

    源码分析pywinauto 实现的原理

    1、建立控件索引
    print_control_identifiers():   函数里面把所有控件建立了一个列表,进行词典索引
           # Create a list of this control and all its descendants
           all_ctrls = [this_ctrl, ] + this_ctrl.descendants()
          
            name_ctrl_id_map = findbestmatch.UniqueDict() 
    每个控件会有elementinfo
    2、查找控件
    在控件大列表中根据属性来查找控件 
    
    3、鼠标或者键盘操作
    针对控件窗口进行发送消息操作
    app.Notepad.Edit.right_click()  
    鼠标或者键盘操作就是发送消息了
           win32functions.PostMessage(ctrl, msg, win32structures.WPARAM(flags), win32structures.LPARAM(click_point))
    

    参考:https://pywinauto.readthedocs.io/en/latest/index.html
    https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193036

    相关文章

      网友评论

          本文标题:最棒的windows自动化测试工具 pywinauto 速成

          本文链接:https://www.haomeiwen.com/subject/puefsktx.html