查找book对象

//book #所有的数
//book[1] #第一本书
//book[last()] 倒数第一本:
//表示从目录任意位置查找,/表示按照目录顺序查找
倒数第二本://book[last()-1]

属性查找@

//book[@category=”cooking”] 表示查找属性category为cooking的内容

逻辑表达式

And查找
//book[@category=”web” and @cover=”paperback”]

Or查找
//book[@category=”web” or @cover=”paperback”]

非查找控件
//book[@category!=”web”]

Not查找
//year[not(.=2005)]

模糊匹配
//book/title[contains(text(),’Potter’)]

精确匹配
//book/year[(text()=2005)]

使用大于小于符号定位
查找book下year下的文本内容小于2005的
//book/year[(text()<2005)] 

相对定位
相对定位是两个杠表示“//”,相对路径易维护
//book//title

轴方式定位

parent::* :表示当前节点的父节点元素
ancestor::* :表示当前节点的祖先节点元素
child::* :表示当前节点的子元素 /A/descendant::* 表示A的所有后代元素
self::* :表示当前节点的自身元素
ancestor-or-self::* :表示当前节点的及它的祖先节点元素
descendant-or-self::* :表示当前节点的及它们的后代元素
following-sibling::* :表示当前节点的后序所有兄弟节点元素
preceding-sibling::* :表示当前节点的前面所有兄弟节点元素
following::* :表示当前节点的后序所有元素
preceding::* :表示当前节点的所有元素

组合属性定位 XPath 支持根据多个属性同时定位元素,语法格式:

//input[@type='text' and @ id='kw']:定位 type 属性值为 'text' 并且 id 属性值为 'kw' 的 input 元素 根据属性部分匹配 包含属性值://[contains(@属性名,'部分属性值')],比如,//input[contains(@class,'_ip')] 匹配属性值开头://[starts-with(@属性名,'属性值开头')],比如,//input[starts-with(@class,'s_ip')] 不支持匹配属性值结尾 根据次序定位 XPath 支持根据次序定位元素,而且语法比 css 选择器更简洁,语法格式:

//标签名[下标值] 某类型 第几个 子元素 //div[2]:定位到 作为第2个子元素的 div 元素;等价于 css 选择器中的 div:nth-of-type(2)

第几个子元素 //div/*[2]:定位到 父元素为 div 的第二个子元素,不区分类型;等价于 css 选择器中的 div:nth-child(2)

某类型 倒数第几个 子元素 //div[last()]:定位到 div 类型的最后1个元素;等价于 css 选择器中的 div:nth-last-child(1)

//div[last()-1]:定位到 div 类型的倒数第2个元素;等价于 css 选择器中的 div:nth-last-child(2)

//div[last()-n]:定位到 div 类型的倒数第2个元素;等价于 css 选择器中的 div:nth-last-child(n+1)

范围选择 这种定位方式是 css 选择器所不具有的。

//ul/li[position()<=2]:定位 ul类型下的第1~2个 li 元素

//ul/li[position()>=last()-1]:定位 ul类型下的最后2个 li 元素

组选择 XPath 组选择是使用 | 隔开的,语法格式:

//input | //h3:选择所有的 input 元素与 h3 元素,等价于 css 选择器中的:input, h3 定位父节点 XPath 选择父节点类似于 Linux 的返回上级目录,使用 /..,这是 css 选择器不具备的功能,语法格式:

//[@id='kw']/..:定位到 id 为 'kw' 的元素的父节点 而且还可以继续往上层找父节点://[@id='kw']/../..

定位兄弟节点 XPath 定位兄弟节点,使用 following-sibling:: 与 preceding-sibling::,语法格式:

//[@id='kw']/following-sibling:::定位到 id 为 'kw' 的元素的所有后续兄弟节点,等价于 css 选择器中的:#kw~ * //[@name='rsv_t']/preceding-sibling:::定位到 name 为 'rsv_t' 的元素的所有前面的节点

a.starts-with 例子: input[starts-with(@id,'ctrl')] 解析:匹配以 ctrl开始的属性值 b.ends-with 例子:input[ends-with(@id,'_userName')] 解析:匹配以 userName 结尾的属性值 c.contains() 例子:Input[contains(@id,'userName')] 解析:匹配含有 userName 属性值