前言
前面好幾篇文章一直用到xpath的定位,但都是建立再不斷的嘗試,要來好好把這些整理一遍了。
等等會用到的有 following,following-sibling,child,parent
正文
下面所有的測試資料都是根據 讀冊生活1.沒有加上節點之前(Fig. 1)
(Fig. 1)
$x("//div[@id='listView']/div[@class='bookGridByListView']")
2.加上 /following-sibling::*(Fig. 2),
首先 / 中文的意思是:搜尋目前節點底下的節點(只有一層),再來是 following-sibling::* ,選取當前節點之後的兄弟節點(只會找你這一輩的人e.g. 哥、妹、弟)
$x("//div[@id='listView']/div[@class='bookGridByListView']/following-sibling::*")
(Fig. 2)
3.加上 /following::* (Fig. 3),
following::*,選取當前節點之後的所有節點(只要是你的親戚通通來),當然也可以限定只找其中一項,把 * 改標籤,
看是要取得底下的所有ul 或是 li 還是要div 或是a,
(不論你是二伯的堂哥,還是三伯的堂哥,通通來)(Fig. 4)
$x("//div[@id='listView']/div[@class='bookGridByListView']/following::*")
(Fig. 3)
$x("//div[@id='listView']/div[@class='bookGridByListView']/following::li")
4.加上 //following-sibling::*,(Fig. 5)
$x("//div[@id='listView']/div[@class='bookGridByListView']//following-sibling::*")
首先 //中文的意思是 :搜尋目前節點底下的所有節點(不管幾層通通來)
following-sibling的意思跟上面一樣,但配上// 後,就變成不管底下幾層只要是你有兄弟姊妹通通出來,
等等可以跟下面的//following比較,兩個之間差了ul,因為ul只有一個(Fig. 6)
5.加上//following::* ,(Fig. 7)
$x("//div[@id='listView']/div[@class='bookGridByListView']//following::*")
following的意思跟上面一樣,但配上//後,就變成,只要是親戚通通出來。
這邊就看的到ul的元素了。
p.s 4跟5的意思如果不對,還請告知,這部分我想了很久也測了很多次,覺得應該是這樣。
6.加上/child::*,(Fig. 8)
$x("//div[@id='listView']/div[@class='bookGridByListView']/child::*")
child的意思配上 /變成,找下面的兒子們出來(跟following不同的是,child是包含本身)
(Fig. 8)
7.加上//child::*,(Fig. 9)
找出所有親戚的兒子 或 孫子 出來
(Fig. 9)
8.加上/parent::*,(Fig. 10)
$x("//div[@id='listView']/div[@class='bookGridByListView']/parent::*")
這個字面上的意思,找出現在節點的父親
(Fig. 10)
9.加上//parent::*,(Fig. 11)
$x("//div[@id='listView']/div[@class='bookGridByListView']//parent::*")
找出所有具有父親身份的人
(Fig. 11)
ref.
Python爬蟲:Xpath語法筆記
Selenium自動化測試之Xpath網頁元素定位
絕對路徑表達式,相對路徑表達式
XPath學習:following-sibling
Python selenium —— 父子、兄弟、相鄰節點定位方式詳解
0 意見:
張貼留言