RanoreXPath表达式主要用来唯一标识桌面或网页程序的UI元素。通常RanoreXPath表达式由三部分组成:Adapters,属性,属性值。
RanoreXPath表达式的主要组成部分
Adapter类型指定了要搜寻的UI元素的类型或者种类。(比如,button, form, text, field, listbox等)。
查看上图中RanoreXPath表达式第一部分“/form[@title=”Form 1″]”,
字符串”/form”指定了要搜寻的UI元素的adapter类型是form。
Adapter Ranorex.Form代表顶级窗口,比如Windows桌面系统的对话框或者提示消息框。
属性比较表达式'[@title=’Form 1′]’则具体指定要搜寻的UI元素。
举例说明,下图中RanoreXPath表达式将会寻找一个form类型的UI元素,该form有一个”title”属性且”title”为”Form 1″。同时这个form元素包含了一个标题为”Container 1″的container,并且该container又包含了一个文本值为“Button 1”的button。
RanoreXPath 的层次结构
使用Ranorex Spy工具可以获取特定UI对象的RanoreXPath。编辑RanoreXPath,既可以使用Ranorex Spy的文本框,也可以在对象库视图中直接改变特殊UI元素所在对象库中的路径值。Ranorex Path编辑器提供了一种更简便的方法来编辑RanoreXPath。
注意:使用<CTRL>+方向键,可以在RanoreXPath的前后标记中切换。使用<CRTL>+<SHIFT>+方向键,可以选择RanoreXPath的特定部分。使用<SHIFT>+<UP>方向键,可以选择RanoreXPath中当前正已选中的标记(标记可以为值,标识符,操作符等)。
在本节中,您将学习有关 RanoreXPath 的:
RanoreXPath 语法示例
高级RanoreXPath示例
RanoreXPath正则表达式
RanoreXPath 语法示例
每个 RanoreXPath 都可以返回多个与查询路径匹配的 GUI 元素。RanoreXPath以W3C XPath为原型。
路径
/form/button
绝对路径方式标识form下全部的button子元素。
./button
相对路径方式标识当前元素下全部的button子元素。
//button
标识root元素派生的全部button子元素,即元素树中所有层级的全部button子元素。
.//button
标识当前元素派生的全部button子元素,即当前元素子元素树中所有层级的全部button子元素。
../button
标识由当前元素的父元素派生的全部button。
/form/container?/button
form和button之间的一个adapter container,为可选匹配项。上式可同时匹配:”/form/container/button”和”/form/button”
/form/?/button
form和button之间的每个adapter,为可选匹配项
属性
/form
标识一个最高层级的应用
/form[@title=’Calculator’]
标识一个title属性值为”Calculator”的顶层应用
/form[@title=’Calculator’ and @instance=’2′]
标识一个顶层应用,该应用的title属性值为”Calculator”,该应用的instance属性值为2
/form[@title=’Calculator’ or @class=’SciCalc’]
标识一个顶层应用,该应用的title属性值为”Calculator”,或者该应用的class属性值为”SciCalc”
/form/button
标识顶层应用的一个button
/form/button[2]
标识顶层应用的第二个button
/form/button[-2]
标识顶层应用的倒数第二个button
/form/button[@text=’7′]
标识顶层应用的一个button,该button的text属性值为’7’。
/form/button[@text!=’7′]
标识顶层应用的一个button,该button的text属性值不为’7’。
/form/button[@text~’^7′]
通过正则表达式来标识顶层应用的一个button,该button的text属性需匹配正则表达式”^7″
/form/button[@text!~’^7′]
通过正则表达式来标识顶层应用的一个button,该button的text属性不能匹配正则表达式”^7″
/form/control[@items.count=100]
使用级联的属性名来标识一个的WinForms控件。该控件包含有”Items”属性,同时”Items”拥有的”Count”属性的返回值为100
/form/*[@text=’7′]
标识text属性值为’7’的所有元素。
/form/container?[@caption=’Container 1′]/button
form和button之间的一个container adapter,为可选匹配项。上式标识:’/form/container[@caption=’Container 1”]/button’和’/form/button’
/form/button[?’add’]
标识button,只要其某一属性包含字符串’add’(不区分大小写)
/form/button[@text!=null()]
标识一个text属性非null的button
/form/progressbar[@Value>=13.5]
标识一个progress bar,其Value属性的值大于或等于13.5(其它比较操作符一样:>, <=, <)
/form[@title=$var]
标识一个顶层应用,其title属性值等于变量$var的值
/form/button[$var]
标识一个button,其索引值等于变量$var的值
/dom//input[#’search’]
标识web文档中的一个input元素,该元素有唯一id号’search'(支持web测试)
函数
/form/table/row/cell[first()=’True’]
标识一行的第一个单元格
/form/table/row/cell[last()=’True’]
标识一行的最后一个单元格
/form/table/row/cell[index()=2]
标识一行的第二个单元格
/form[x()>100 and y()>100]
标识一个屏幕座标(横座标X和纵座标Y都)大于100的顶层应用
/form/button[cx()>10 and cy()>10]
标识一个相对座标(相对其父元素的座标,横座标X和纵座标Y都)大于10的按钮
/form[width()>100 and height()>100]
标识一个宽和高都大于100的顶层应用
高级RanoreXPath示例
下面的例子,介绍了如何使用RanoreXPath去标识不具备独特属性的GUI元素。该示例演示了如何使用相关RanoreXPath表达式来访问html复选框。
每个表格中的一行表示一个用户。用户属性映射到不同的单元格。
1. 通过列表中的名称来标识用户(绿色高亮)
/table/*/tr/td/a[@InnerText=’Username’]
2. 基于1中获得的名称获取相对路径(红色高亮),选择对应的复选框
/../../td/input[@type=’checkbox’]
3. 结合以上两个路径,得到复选框的完整路径。
高级RanoreXPath示例
RanoreXPath正则表达式
button[@text~’sample[0-9]’]
匹配以下button元素:’sample0′, ‘sample1’, … ‘sample9’, ‘My sample26′
listitem[@text~’^sample.*’]
匹配其text属性以’sample’开头的所有元素
listitem[@text~’.*sample$’]
匹配其text属性以’sample’结尾的所有元素
listitem[@text~’gr(a|e)y’]
匹配text属性为’gray’或’grey’的元素
listitem[@text~’^sample\ 123$’]
匹配text属性为’sample 123’的元素(使用反斜号转义特殊字符,比如空格)
listitem[@text~'(?i:MyTeXt)’]
匹配text属性值(不区分大小写)满足正则表达式'(?i:MyTeXt)’的元素。比如: ‘mytext’, ‘MYTEXT’, ‘mYTeXT’, …
以下特殊字符在正则表达式中使用时,需要其前面加一个反斜号’\’进行转义。比如,想要匹配文本’Sample.’(结尾有符号’.’),符号’.’需要使用’\’进行转义,其正则表达式格式为:’Sample\.’。
字符 描述
. 匹配任意单个字符。比如,’Sample.’可匹配’Sample1’,’Samplex’等。
$ 匹配字符串结尾。表达式’abc$’只匹配以子字符串’abc’结尾的字符串。
| 允许使用其两侧的字符组成正则表达式,来匹配目标字符串。表达式’gr(a|e)y’可以匹配’gray’和’grey’。
* 星号表示其左侧的表达式中应匹配0次或多次。比如‘go*gle’可匹配ggle, gogle, google, gooole等。
+ 加号类似于星号,但加号左侧的字符至少匹配1次。比如’go+gle’可匹配gogle, google, gooogle等。
? 问号左侧的字符出现0次或1次。比如,’colo?r’可匹配color和colour。
^ 匹配字符串首部。表达式’^A’只匹配以A开头的字符串
() 括号影响模式评估的顺序。
[] 中括号内的所有字符,都可以用来匹配目标字符。
[^0-9] 紧靠者左中括号的^符号有不同的含义。它表示,使用除中括号包含的字符外的所有字符来匹配目标字符串。表达式'[^0-9]’表示目标字符不能是数字。
更多有关正则表达的信息,请参考MSDN网站:http://msdn.microsoft.com/en-us/library/az24scfc.aspx