在第 6 天的時候我們有講到 XPATH,可以讓我們更方便去定位網頁上的元素。今天要介紹的就是 XPATH 更進階的用法- XPATH 軸(axes)。
絕對路徑 vs 相對路徑
一開始我們有講到,如果直接在 F12 的介面複製 XPATH 看起來會像這樣
/html/body/nav/div[2]/ul[2]/li[1]/button
它會從 html 這個根結點開始一路往下尋找到目標元素,這個就是絕對路徑
而我們用 class 或其他屬性去尋找我們要的元素就是相對路徑。
而 XPATH Axes 是藉由目前找到的節點去往上或往下找我們的目標元素。
XPATH Axes
在 Selenium Webdriver 內,有 13 個軸可以使用,下面介紹幾個常用的軸,其他軸可參考XPath学习:轴(4)——ancestor
- Child: 選擇目前節點下的所有子元素(目前節點下面一階的所有同等元素都會被選到)。
- Parent: Child 的相反,選到目前元素上面一階的元素(父元素),跟 Child 不同的地方是父元素只會有一個。
- Descendant: 照翻過來是後裔的意思。使用後會選擇到目前元素下面所有的元素。
- Ancestor: 意思是祖先,使用後會選擇到目前元素上面所有的元素(直到根節點)。
- Descendant-or-self: 跟 Descendant 一樣,但目前所在的節點也會被選到。
- Ancestor-or-self: 跟 Ancestor 一樣,但目前所在的節點也會被選到。
- Preceding-sibling: 選擇目前節點前面的所有同級節點。
- Following-sibling: 選擇目前節點後面的所有同級節點。