绝对定位:
/html/body/div/input[@value='查询']
如果页面动态特性很多, 很容易找不到
相对定位:
//input[@value='查询']
开头的 // 表示在所有层级找.
根据id搜索:
//*[@id='form']/input[1]
//*表示所有元素, 方括号的内容起到过滤作用
根据属性搜索:
id/value也是一种属性
//*[@id='form']
xpath函数
//img[contains(@src, 'img.baidu.com')]//a[contains(text(), '百度')]
找到父亲元素
./....parent::*./parent::*
祖先节点
./ancestor::*
所有子孙节点
descendant
之后的节点
following
之后的同级节点
follo
之前的同级节点
preceding
之前的同级节点
preceding-sibling
谓语
方括号里的是谓语
/book[1]/book[last()]/book[last()-1]/book[position()<3]/book[@alt] 指定了alt的book/book[@alt='foo'] 指定了alt=foo的book// 这个price怎么理解?/bookstore/book[price>35.00]
并集
//book/title | //book/price
and or 可以组合条件
函数
text()取节点的直接text, 不包含子孙的textstring()该节点及其子孙的textupper-caselower-casecontainsstarts-withends-withmatches("str", "pattern")not(...) 对内容取反position() 当前元素在父节点下的顺序last() 返回最后一个元素的index(基于1)
