XPath編寫規則學習總結

XPath編寫規則學習工具

輔助工具:firefox安裝findbugs,view Xpathpost

firefox :Xpath驗證方式:$x("xpath"); 粘貼xpath語句回車便可學習

定位:spa

一、依靠本身屬性,文本定位:

   //td[text()='test'].net

   //div[contains(@class ,'test')]firefox

   //input[@type='radio' and @value='1']索引

   //span[@name='bruce' and text()='bruce2'] 或 //span[@name='bruce'][ text()='bruce2'] --and關鍵字get

   //span[@name='bruce' or text()='bruce2'] --or關鍵字input

二、依靠父節點定位:

  //div[@class='test mytest']/divstring

  //div[@id='test']/div

三、依靠子節點定位

  //div[div[@id='test']] --尋找含有id=test的div的div

  //div[div[@name='test']]

  //div[p[@id='test']]

四、混合型定位

  //div[div[@name='test']]/img

  //td[a//font[contains(text(),'test')]]//input[@type='checkbox']

五、高級方法 

  (1)following-sibling ---尋找緊跟定位到的元素的下一個元素

   例子://input[@id='1234']/following-sibling=input --定位緊跟id=1234的下一個的input元素,同級有效

             //input[@id='1234']/following-sibling::input ,input後可再跟條件

   (2)preceding-sibling ---尋找緊跟定位到的元素的上一個元素

   例子://input[@id='123']/preceding-sibling=span --定位緊跟id=123的上一個span元素

             //input[@id='1234']/preceding-sibling::input ,input後可再跟條件

     (3)starts-with --判斷是否以某關鍵字開頭

      例子://input[starts-with(@id,'test')]

     (4)contains -- 是否包含某關鍵字

       例子: //td[a//font[contains(text(),'test')]]//input[@type='checkbox']

     (5)not ---不包含某關鍵字

        例子://input[not(@id='1234')]

                  //span[not(contaions(text(),'xpath'))]

六、索引關鍵字,position,last

    (1)position()=2

             position()>3

             position()<5    

      例子://div[@id='test']/span[2]或

                //div[@id='test']/span[position()=2] --正數第2個span

      (2)last()-1

       例子://div[@id='test']/span[last()-2] --倒數第2個span元素

七、根據屬性定位

  //div[@class] --查找含有class屬性的div

  //div[@class='test'] --查找含有class屬性且class屬性值爲test的的div元素

八、不經常使用關鍵字

     (1)substring,語法:substring(str,start_postion,length) ,從1開始計算

           例子://div[@id='test']/span[substring(@name,3,5)='bruce'] --找name的第三位開始總共5位字母爲bruce的span

     (2)substring-before ,語法:substring-before(str,substr)

           例子://div[@id='test']/span[substring-before(@class,'-')='spanclass'] --查找分割關鍵字前面的字符爲spanclass的span

     (3)substring-after,語法:substring-after(str,substr)

            例子://div[@id='substring']/span[substring-after(@class,'-')='spanclass'] --查找分割關鍵字後面的字符爲spanclass的span

九、通配符:*

      //span[@*='bruce']

      //*[@*='bruce']

      //*[@name='bruce']

十、axes 軸

   (1)parent 父節點

          例子://div[span[text()='+++test']]/parent::div[contaions(text(),'test')] --查找含有span的text爲+++test的的div的父節點

                    //div[span[text()='+++test']]/parent::div/span[contaions(text(),'test')]

   (2)ancestor 祖先節點

          例子://div[span[text()='+++test']]/ancestor::div    

   (3)descendant 孫子節點

           例子://div[span[text()='+++test']]/descendant::div --會將該節點下的全部div打印出來

                      //div[span[text()='+++test']]/descendant::div/span[contaions(text(),'test')]

   (4)following 將當前節點下後面全部的指定節點取出

            例子://div[text()='current NodeA']/following::div --會將current NodeA後面的全部的div取出來,後續的div可再加條件判斷       

   (5)preceding 將當前節點下前面全部的指定節點取出

            例子://div[text()='current NodeA']/preceding::div --會將current NodeA前面的全部的div取出來,後續的div可再加條件判斷

相關文章
相關標籤/搜索