qt4c.qpath
¶
qpath模块
详见QPath类说明
Module Contents¶
Classes¶
EnumQPathKey |
|
EnumUIType |
|
QPath |
Query Path类,使用QPath字符串定位UI控件 |
Functions¶
_find_by_name (root, name) |
-
class
qt4c.qpath.
EnumQPathKey
¶ Bases:
object
-
MAX_DEPTH
= MAXDEPTH¶
-
INSTANCE
= INSTANCE¶
-
UI_TYPE
= UITYPE¶
-
-
exception
qt4c.qpath.
QPathError
¶ Bases:
Exception
QPath异常类定义
-
class
qt4c.qpath.
QPath
(qpath_string)¶ Bases:
object
Query Path类,使用QPath字符串定位UI控件
QPath的定义: Qpath ::= Seperator UIObjectLocator Qpath Seperator ::= 路径分隔符,任意的单个字符 UIObjectLocator ::= UIObjectProperty && UIObjectLocator UIObjectProperty ::= UIProperty | RelationProperty | IndexProperty | UITypeProperty UIProperty ::= [Window/UIA/Html]Property Operator “Value” UITypeProperty ::= Win | UIA | Html RelationProperty ::= MaxDepth = “Number”(最大搜索子孙深度) IndexProperty ::= Instance=”Integer”(Integer:找到的多个控件中的第几个(负数表示从后往前数))
Operator ::= ‘=’ | ‘~=’ (‘=’ 表示精确匹配; ‘~=’ 表示用正则表达式匹配)
UI控件基本上都是由树形结构组织起来的。为了方便定位树形结构的节点,QPath采用了路径结构 的字符串形式。 QPath以第一个字符为路径分隔符,如 “/Node1/Node2/Node3”和 “|Node1|Node2|Node3”是一样的路径,都表示先找到Node1,再在Node1的子孙节点里找Node2,然后在Node2的子孙节点里 找Node3。而定位每个Node需要改节点的多个属性以”&&”符号连接起来, 形成 “/Property1=’value1’ && property2~=’value2’ && …”的形式,其中”~=”表示正则匹配。QPath支持的属性包括wincontrols.Window和htmlcontrols.HtmlElement的类属性。QPath中的每个节点都有两个默认属性’UIType’和’MaxDepth’。 “UIType=’Win32|UIA|Html’”,三个取值分别对应了三种QPath支持的UI类型。当UIType没有指定时默认取值为父节点的值。而”MaxDepth”表示该节点离祖先节点的最大深度, 如果没有明确指定时默认取值为’1’,即直接父子关系。QPath还支持”Instance”属性,用于当找到多个节点时指定选择第几个节点。
例子: Qpath =”/ ClassName=’TxGuiFoundation’ && Caption~=’QQd+’ && Instance=’-1’
/ UIType=’UIA’ && name=’mainpanel’ && MaxDepth=’10’”-
PROPERTY_SEP
= &&¶
-
OPERATORS
= ['=', '~=']¶
-
MATCH_FUNCS
¶
-
CONTROL_TYPES
¶
-
update_control_type
(self)¶
-
_find_controls_recur
(self, root, qpath)¶ 递归查找控件
参数: - root – 根控件
- qpath – 解析后的qpath结构
返回: 返回(found_controls, remain_qpath), 其中found_controls是找到的控件,remain_qpath
是未能找到控件时剩下的未能匹配的qpath。
-
_match_control
(self, control, props)¶ 控件是否匹配给定的属性
参数: - control – 控件
- props – 要匹配的控件属性字典,如{‘classname’:[‘=’, ‘window’]}
-
_parse_property
(self, prop_str)¶ 解析property字符串,返回解析后结构
例如将 “ClassName=’Dialog’ ” 解析返回 {ClassName: [‘=’, ‘Dialog’]}
-
_parse
(self, qpath_string)¶ 解析qpath,并返回QPath的路径分隔符和解析后的结构
将例如”| ClassName=’Dialog’ && Caption~=’SaveAs’ | UIType=’UIA’ && ControlID=’123’ && Instanc=’-1’” 的QPath解析为下面结构:[{‘ClassName’: [‘=’, ‘Dialog’], ‘Caption’: [‘~=’, ‘SaveAs’]}, {‘UIType’: [‘=’, ‘UIA’], ‘ControlID’: [‘=’, ‘123’], ‘Instance’: [‘=’, ‘-1’]}]
参数: qpath_string – qpath 字符串 返回: (seperator, parsed_qpath)
-
__str__
(self)¶ 返回格式化后的QPath字符串
-
getErrorPath
(self)¶ 返回最后一次QPath.search搜索未能匹配的路径
返回类型: string
-
search
(self, root=None)¶ 根据qpath和root查找控件
参数: root (实例类型) – 查找开始的控件 返回: 返回找到的控件列表
-
-
qt4c.qpath.
_find_by_name
(root, name)¶