如何利用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)

經過一次掃描后,即可獲取該軟件中的所有控件的基本信息,這樣再批量編寫控件操作腳本就方便多了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM