接口文档¶
Submodules¶
tuia.qpathparser module¶
QPath解析器
QPath是一个用于定位各个平台的UI控件(除Web控件)的查询语言。
QPath语法定义如下:
QPath ::= Seperator QPath Seperator UIObjectLocator UIObjectLocator ::= UIObjectProperty PropertyConnector UIObjectLocator UIObjectProperty ::= UIProperty | RelationProperty | IndexProperty | UITypeProperty UIProperty ::= PropertyName Operator Literal RelationProperty ::= MaxDepthIdentifier EqualOperator Literal IndexProperty ::= InstanceIdentifier EqualOperator Literal UITypeProperty ::= UITypeIdentifier EqualOperator StringLiteral MaxDepthIdentifier := "MaxDepth" InstanceIdentifier ::= "Instance" UITypeIdentifier := "UIType" Operator ::= EqualOperator | MatchOperator PropertyConnector ::= "&&" Seperator ::= "/" EqualOperator ::= "=" #精确匹配 MatchOperator ::= "~=" #使用正则进行模糊匹配 PropertyName ::= "[a-zA-Z_]*" Literal := StringLiteral | IntegerLiteral | BooleanLiteral StringLiteral ::= ""[a-zA-Z_]*"" IntegerLiteral ::= "[0-9]*" BooleanLiteral := "True" | "False" | "true" | "false"需要注意的是,QPath的属性名都是大小写无关的。
简单举例如下:
/ ClassName='TxGuiFoundation' && Caption~='QQ\d+' / name='mainpanel'
-
class
tuia.qpathparser.Literal(value, lexpos)¶ 基类:
objectQPath属性常量值
-
class
tuia.qpathparser.Operator(value, lexpos)¶ 基类:
objectQPath操作符
-
class
tuia.qpathparser.PropertyName(value, lexpos)¶ 基类:
objectQPath属性名
-
class
tuia.qpathparser.QPathLexer¶ 基类:
objectQPath词法解析器
-
bad_match= '~[^=*]'¶
-
bad_octal_constant= '0[0-7]*[89]'¶
-
boolean_constant= '(True)|(False)|(true)|(false)'¶
-
decimal_constant= '(0)|([1-9][0-9]*)'¶
-
escape_sequence_1= '(?<=\\\\)"'¶
-
escape_sequence_2= "(?<=\\\\)'"¶
-
hex_constant= '0[xX][0-9a-fA-F]+'¶
-
hex_digits= '[0-9a-fA-F]+'¶
-
hex_prefix= '0[xX]'¶
-
input(qpath_string)¶ 词法分析输入
参数: qpath_string (str) -- QPath字符串
-
octal_constant= '0[0-7]+'¶
-
string_char_1= '([^"]|(?<=\\\\)")'¶
-
string_char_2= "([^']|(?<=\\\\)')"¶
-
string_literal= '("([^"]|(?<=\\\\)")*")|(\'([^\']|(?<=\\\\)\')*\')'¶
-
string_literal_1= '"([^"]|(?<=\\\\)")*"'¶
-
string_literal_2= "'([^']|(?<=\\\\)')*'"¶
-
t_AND= '(&&)|(&)'¶
-
t_BAD_MATCH(t)¶
-
t_BOOL_CONST(t)¶
-
t_EQUAL= '='¶
-
t_INT_CONST_DEC(t)¶
-
t_INT_CONST_HEX(t)¶
-
t_INT_CONST_OCT(t)¶
-
t_MATCH= '~='¶
-
t_MINUS= '-'¶
-
t_PROPERTY= '[a-zA-Z_][0-9a-zA-Z_]*'¶
-
t_SEPERATOR= '/'¶
-
t_STRING_LITERAL(t)¶
-
t_error(t)¶
-
t_ignore= '\t '¶
-
token()¶ 解析并返回一个Token
-
tokens= ['SEPERATOR', 'EQUAL', 'MATCH', 'AND', 'BOOL_CONST', 'STRING_LITERAL', 'INT_CONST_DEC', 'INT_CONST_OCT', 'INT_CONST_HEX', 'PROPERTY', 'MINUS']¶
-
-
class
tuia.qpathparser.QPathParser(verbose=False)¶ 基类:
objectQPath语法解析器
QPath解析器解析QPath后会生成两个结构:
1. QPath结构列表:每一个UIObjectLocator用一个字典表示 其中字典的键值为属性名,对应的值为一个长度为2的列表,第一个元素为操作符号, 目前为字符串'='或'~=',第二个元素为属性值
2. QPath词法位置信息:和解析后的结构对应,每一个UIObjectLocator用一个字典表示 其中字典的键值为属性名,对应的指为一个长度为3的列表,第一个元素为属性名的 词法位置,第二个元素为操作符的词法位置,第三个元素为属性值的词法位置
比如以下的QPath:
/ ClassName="TxGuiFoundation" && Caption1~='QQ\d+' && Instance=-1 / UIType='GF' && name='mainpanel' && MaxDepth=10
解析后得到的结构列表为:
[{'Caption1': ['~=', 'QQ\d+'], 'ClassName': ['=', 'TxGuiFoundation'], 'Instance': ['=', -1]}, {'MaxDepth': ['=', 10], 'UIType': ['=', 'GF'], 'name': ['=', 'mainpanel']}]
解析后得到的词法位置信息表为:
[{'CAPTION1': [33, 41, 43], 'CLASSNAME': [2, 11, 12], 'INSTANCE': [54, 62, 63]}, {'MAXDEPTH': [103, 111, 112], 'NAME': [83, 87, 88], 'UITYPE': [68, 74, 75]}]
使用方法示例:
qp ="""/ ClassName="TxGuiFoundation" && Caption1~='QQ\d+' && Instance='-1' / UIType='GF' && name='mainpanel' && MaxDepth='10'""" parser = QPathParser() qpath_struct, lex_info = parser.parse(qp)
-
INT_TYPE_PROPNAMES= ['INSTANCE', 'MAXDEPTH']¶
-
p_error(p)¶ 处理错误
-
p_int_const(p)¶ int_const : INT_CONST_DEC | INT_CONST_OCT | INT_CONST_HEX | MINUS int_const
-
p_object_locator(p)¶ object_locator : prop | object_locator AND prop
-
p_operator(p)¶ operator : EQUAL | MATCH
-
p_prop(p)¶ prop : prop_name operator prop_value
-
p_prop_name(p)¶ prop_name : PROPERTY
-
p_prop_value(p)¶ prop_value : STRING_LITERAL | BOOL_CONST | int_const
-
p_qpath(p)¶ qpath : SEPERATOR qpath_content
-
p_qpath_content(p)¶ qpath_content : | object_locator | qpath_content SEPERATOR object_locator
-
parse(qpath_string)¶ 返回解析后的结果
参数: qpath_string (string) -- QPath字符串 返回: list, list - 解析后结构, 词法位置信息
-
-
exception
tuia.qpathparser.QPathSyntaxError(qpath_string, err_msg, lexpos)¶ 基类:
exceptions.ExceptionQPath语法错误
-
class
tuia.qpathparser.UIObjectLocator(properties)¶ 基类:
objectQPath Locator
-
append(prop)¶ 增加一个属性
参数: prop (UIObjectProperty) -- 属性
-
dumps()¶ 序列化
返回: list
-
format()¶ 格式化字符串
返回: str
-
tuia.qpathparser module¶
异常模块定义
-
exception
tuia.exceptions.ControlAmbiguousError¶ 基类:
exceptions.Exception找到多个控件
-
exception
tuia.exceptions.ControlExpiredError¶ 基类:
exceptions.Exception控件失效错误
-
exception
tuia.exceptions.ControlNotFoundError¶ 基类:
exceptions.Exception控件没有找到
-
exception
tuia.exceptions.TimeoutError¶ 基类:
exceptions.Exception超时异常
Module contents¶
Tuia:Tencent UI Automation Framework