封装Control

QT4C中提供了丰富的控件类型供使用,如ListView, TrayNotifyBar, ComboBox等,对于Win32控件和UIA控件,QT4C封装了不同的控件类型可供使用,QT4C在Python层也对这些控件的自动化做了封装,以供使用。

QT4C已支持的一些常用控件类型如下(对于未封装的控件类型应使用Control基类进行封装):

Win32控件:

控件类型 使用场景 对应接口
输入框 常用于一般的输入框 qt4c.wincontrols.TextBox
下拉框 可获取/选择下拉选项中某项 qt4c.wincontrols.ComboBox
列表(项) 常用于一般的列表 qt4c.wincontrols.ListView
菜单(项) 可获取菜单项 qt4c.wincontrols.Menu
树列表(项) 树形控件,如文件列表树 qt4c.wincontrols.TreeView

UIA控件:

控件类型 使用场景 对应接口
输入框 可进行输入操作 qt4c.uiacontrols.Edit
下拉框 可获取/选择下拉选项中某项 qt4c.uiacontrols.ComboBox
单选按钮 可获取按钮状态 qt4c.uiacontrols.RadioButton

更多控件类型请参考《qt4c package》进行使用。

参照《定位UI元素》,一个简单的控件定义如下,这里封装了计算器主界面的按键1:

class MainPanel(win.Window):
    def __init__(self, qpath=None):
        qp = QPath("/ClassName='CalcFrame' && Text='计算器' && Visible='True'")
        super(MainPanel, self).__init__(locator=qp)

        self.updateLocator({
            '按键1': {'type': win.Control, 'root': self, 'locator': QPath("/ClassName='Button' && MaxDepth='3' && ControlId='0x83'")},
        })

你也可以使用封装好的控件类型作为基类进行封装(假设按键1是一个UIA按钮控件):

import qt4c.uiacontrols as uia
self.updateLocator({
    '按键1': {'type': uia.Button, 'root': self, 'locator': QPath("/ClassName='Button' && MaxDepth='3' && ControlId='0x83'")},
})

定义完成之后,在MainPanel的接口下调用方式如下:

self.Controls['按键1']

我们还可以获取其属性,例如ControlId属性:

print self.Controls['按键1'].ControlId

或者点击:

self.Controls['按键1'].click()