zoukankan      html  css  js  c++  java
  • 如何利用Python+AutoIt获取软件中所有控件的基本信息?

    我们都知道,AutoIt自带的工具“AutoIt v3 Window Info”能够获取标准控件的信息,如果我们要批量写一些控件操作的方法,那这个方法显然不够高效,下面是我摸索出的一个方法,供大家参考。

    首先,我们需要把“Options”-->“Freeze”取消勾选。

    这时我们发现,无需借助“Finder Tool“,只需移动鼠标到控件上即可获取控件信息,因此,我们可以编写一个脚本,控制鼠标在软件内部滑动即可获取每一个控件的信息。

    控件的信息能够在”Window Info“中显示,我们只需要获取”Class“和”Instance“两个属性即可,但是我们用”Window Info“无法获取自身控件信息,此时我们可以用另一个”Window Info“工具,来获取第一个”Window Info“的控件信息。

    这样,我们就可以用Python写脚本了:

    def test(win_title = "WinSCP 登录"):
        beg = time()
        # 激活窗口
        autoit.win_activate(win_title)
        # 获取软件位置
        win_x1, win_y1, win_x2, win_y2 = autoit.win_get_pos(win_title)
        # 创建列表,用于存放控件信息
        ctrls = []
        # 一行行地扫描软件界面,横向步长25像素,纵向步长10像素
        for y in range(win_y1 + 30, win_y2, 10):
            for x in range(win_x1 + 10, win_x2, 25):
                autoit.mouse_move(x, y)
                # 获取控件信息
                cls = autoit.control_get_text('AutoIt v3 Window Info', '[CLASS:Edit; INSTANCE:3]')
                inst = autoit.control_get_text('AutoIt v3 Window Info', '[CLASS:Edit; INSTANCE:4]')
                # 过滤掉空信息和重复信息
                if cls != '' and (cls, inst) not in ctrls:
                    ctrls.append((cls, inst))
                    print((cls, inst))
        print(ctrls)
        end = time()
        print('time:', end-beg)

    经过一次扫描后,即可获取该软件中的所有控件的基本信息,这样再批量编写控件操作脚本就方便多了。

  • 相关阅读:
    [BJOI2019] 光线
    C# 从零开始写 SharpDx 应用 笔刷
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    PowerShell 拿到显卡信息
    PowerShell 拿到显卡信息
    win10 uwp 如何使用DataTemplate
    win10 uwp 如何使用DataTemplate
  • 原文地址:https://www.cnblogs.com/how333/p/13130588.html
Copyright © 2011-2022 走看看