zoukankan      html  css  js  c++  java
  • 使用 pywinauto 模拟鼠标键盘操作

    官方文档

    比较好的教程    要快速上手可以看下面的例程


    例程:

    这个可以用来检验模块是否安装好了

    from pywinauto.application import Application
    '''启动App,如 记事本'''
    app = Application(backend="uia").start("notepad.exe")
    
    '''选定窗口'''
    edit_window = app['无标题']
    '''打印窗口控件信息'''
    edit_window.dump_tree() # 根据打印出的窗口树关系操作控件,可以用一个文本文档保存该dump_tree,方便之后使用

    这里我直接将控件信息保存在新打开的notepad中,命名为1.txt    比如 下图中这段就是 文件(F) 按钮和 编辑(E) 按钮对应的控件信息

                

    模拟鼠标点击:

    from pywinauto.application import Application
    
    try:   
        '''对于已经启动的窗口,可以直接连接'''
        app = Application(backend="uia").connect(title_re="abc.txt - 记事本") #如果有两个相同标题的窗口,匹配就会有问题
        '''选定窗口'''
        note_window = app['abc.txt - 记事本']  
        '''点击 编辑——>查找'''
        note_window.menu_select("编辑->查找(F)")  # control_type为MenuBar类的控件可以调用该方法
        '''点击 滚动条'''
        ScrollBar = note_window.child_window(title="文本编辑器").child_window(auto_id="NonClientVerticalScrollBar") #子窗口可以用title或auto_id确定
        for _ in range(10):        
            ScrollBar.child_window(title="下一行").click() # Button类的控件可以点击
        
    except BaseException as e:
        print('abc.txt未打开或者没有关闭重开
    ', e)

      注意:选定窗口这一步是必要的,而且窗口被控制一次后需要关闭重开(原因的话试试就知道了~。~)

         其他类型(control_type)的控件也有自己的操作方法,比如 下拉框 可以用 click_input() 点开,再 click() 选中其中的项

                                    (click_input是真正移动光标,click只是发送窗口消息)

         可用于每种不同类型控件的方法

         读取窗口中的字符可以用 child_window().legacy_properties()['Value'] 

         dump_tree() 方法在任意子窗口都可以调用,建议找控件信息时在对应 child_window() 处使用


    获取控件信息除了 dump_tree() 也可以用软件

      资源链接:https://github.com/blackrosezy/gui-inspect-tool

      如果是win32模式连接窗口的话,建议用UISpy,mode设置为Hovering

      只要鼠标移到控件对应位置上,按一下Ctrl就可以定位到控件,在Properties栏看到控件的win32模式下信息

      但是,使用这个软件时不能对软件自身窗口的控件定位(会卡死),也不能点Edit——>Setting(有bug)


    模拟键盘

      参考博客

    from pywinauto.keyboard import send_keys
    
    send_keys('{ENTER}')

       

  • 相关阅读:
    再谈Asp.Net页面生命周期
    多线程、方便扩展的Windows服务程序框架
    用NuGet.Server管好自家的包包
    github for Windows
    MongoVUE 15天试用期解决办法
    NET插件系统——提升系统搜索插件和启动速度的思考
    Visual Studio Ultimate 2012 RC 安装手记
    自动完成菜单
    HBase
    WCF消息可靠性于有序传递
  • 原文地址:https://www.cnblogs.com/Pio-GD/p/14332137.html
Copyright © 2011-2022 走看看