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)

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

  • 相关阅读:
    maven学习(四)maven的生命周期
    maven学习(六)依赖、聚合、继承
    Koa2学习(三)GET请求
    Koa2学习(二)async/await
    Koa2学习(一)环境搭建
    实现一个简易的express中间件
    js生成页面水印
    使用 dva + antd 快速开发react应用
    使用ab 进行并发压力测试
    python3 使用http.server模块 搭建一个简易的http服务器
  • 原文地址:https://www.cnblogs.com/how333/p/13130588.html
Copyright © 2011-2022 走看看