绝对定位

/开头    父节点/子节点

   绝对路径:从根目录开始,一直到当前的目录。
   绝对定位:从根结点开始,一直到当前的结点。结点顺序/结点位置

相对定位

//开头//
    相对路径:相对参照物。// 相对于前面节点。如果//在开头,那就是相对整个html
    定位原则:
        1、不依靠节点顺序和节点位置
        2、只要能够找得到匹配特征的元素就可以。
相对定位表达式
    1、//标签名[@属性名=值]
    2、//标签名[text()=值]
    3、//标签名[contains(@属性名,值)]   //标签名[contains(text(),值)]
    4、*  标签名或者属性名都可以用*,表示匹配所有  //*[contains(@*,"TopicDiscuss")]

    当单一属性,无法唯一定位到元素
    组合条件
    逻辑:and or
    //标签名[text()=值 and @属性名=值 and contains(@属性名,值)]
    //标签名[text()=值 or @属性名=值 or contains(@属性名,值)]

    仅靠元素本身的特征,已经无法唯一定位。 
    层级:
    //祖先节点//要找的节点


轴定位:
元素的兄弟姐妹、父母
轴运算:
ancestor:祖先结点 包括父
parent:父结点   
preceding-sibling: 当前元素节点标签之前的所有兄弟结点
following-sibling:当前元素节点标签之后的所有兄弟结点

preceding: 当前元素节点标签之前的所有结点。(html页面先后顺序)
following: 当前元素节点标签之后的所有结点。(html页面先后顺序)

使用语法
已知的元素/轴名称::标签名称[@属性=值]
例:

   //span[text()="考勤"]/parent::a
   //span[text()="考勤"]/ancestor::a
   //li[text()="发布作业"]/preceding-sibling::*
   //p[@title="030011"]/following-sibling::p[@class="name"]