关系操作符

 

探索完等式操作符之后,接下来你将学习更多的关于关系操作符的知识。关系操作符定义节点之间的关系(元素的路径)。因此没有必要总是使用直接的路径。以路径表示的元素可以用另外一种相对于其“上级”的关系而不是作为父节点的子节点来定义。

节点的快捷菜单有如下关系操作符。

10-rx-axis-1f

图:RanoreXPath Editor可用的关系操作符

  • child: 指向当前节点的所有孩子
  • descendant-or-self: 指向当前节点的所有后代(孩子,孩子的孩子等)和节点自身
  • ancestor: 指向当前节点的所有祖先(父亲,父亲的父亲等)
  • self: 指向当前节点
  • descendant: 指向当前节点的所有后代(孩子,孩子的孩子等)
  • parent: 指向当前节点的父亲
  • ancestor-or-self: 指向当前节点的所有祖先(孩子,孩子的孩子等)和节点自身
  • preceding-sibling: 指向所有位于当前节点之前的兄弟
  • following-sibling: 指向所有位于当前节点之后的兄弟

以下例子描述怎样运用关系操作符脱离直接的方法产生的路径。例如,如果你想指向任何含有文本“Amazon”的单元格的表格行。运用一般、直接的方法构建路径是无法做到的。我们从一个指向特定单元格的路径开始:

/ form [ @controlname =’MainForm ’]/ container / container [ @caption =’’ and @controltypename =’ SplitterPanel ’and @instance =’0’]/ container / container [ @caption =’’ and @controltypename =’ SplitterPanel ’ and @instance =’1’]/ table / row / cell [ @text =’Amazon ’]

 

我们现在可以用关系操作符“parent”移回cell的父元素。父元素是一个row,因而我们得手动地添加一个新的层——row适配器。

/form[@controlname=’MainForm’]/container/container[@caption=” and @controltypename=’SplitterPanel’ and @instance=’0′]/container/container[@caption=” and @controltypename=’SplitterPanel’ and @instance=’1′]/table/row/cell[@text=’Amazon’]/row

我们打开高级RanoreXPath Editor,然后选择Axis的次级菜单的关系操作符parent。

10-rx-amazon-parent-f6

图:当前选中节点定义的关系操作符的快捷菜单

这条路径首先描述了含有文本“Aamazon”的单元格的路径,然后上移一层到这个单元格的父元素——一行。点击Highlight按钮高亮显示元素可得下图。

10-rx-amazon-parent-highlight-bd

图:从新建的路径高亮显示元素

Leave a comment

请输入正确的验证码