注意1:查詢的節點指向,都是xpath的最後一部分
1、根據屬性
By.xpath("//a[@href]") //擷取所有的包含href屬性的節點,可以一次性擷取所有連結
2、父節點 “..” ; 兄弟節點 “ following-sibling::span[1] ” 計數從1開始
已知節點的父節點的第二個div兄弟節點
By.xpath("//span[text()=\"測試用例\"]/../following-sibling::div[2]")
3、根據文本查詢
- 直接指定text //span[text()="測試用例"]
- 包含一部分文本 //span[contains(text(),"用例")]
- 對象中有不是文本的部分,先将所有内容轉換成string,再包含部分 //span[contains(string(),"用例")]
4、比對值對象,不止是text,還有屬性的值也可以
- //div[starts-with(@class,'test')] 查找class屬性中開始位置包含'test'關鍵字的div元素
- //div[contains(@class,'test')] 查找class屬性中包含test關鍵字的div元素
5、關鍵詞::節點名稱[下标]
https://www.cnblogs.com/VseYoung/p/8686383.html
XPath軸(XPath Axes)可定義某個相對于目前節點的節點集:
1、child 選取目前節點的所有子元素 例: //span[text()="用例"]/child::span
2、parent 選取目前節點的父節點,可以直接用..代替 例://span[text()="用例"]/parent::span
3、descendant 選取目前節點的所有後代元素(子、孫等)
4、ancestor 選取目前節點的所有先輩(父、祖父等)
5、descendant-or-self 選取目前節點的所有後代元素(子、孫等)以及目前節點本身
6、ancestor-or-self 選取目前節點的所有先輩(父、祖父等)以及目前節點本身
7、preceding-sibling 選取目前節點之前的所有同級節點
8、following-sibling 選取目前節點之後的所有同級節點
9、preceding 選取文檔中目前節點的開始标簽之前的所有節點
10、following 選取文檔中目前節點的結束标簽之後的所有節點
11、self 選取目前節點
12、attribute 選取目前節點的所有屬性
13、namespace 選取目前節點的所有命名空間節點