1. 程式人生 > 實用技巧 >selenium---xpath軸定位

selenium---xpath軸定位

  前面介紹了元素定位通過xpath的方法,安靜沒有介紹完全,其實通過xpath定位還有一種基本上用不到的方法,這裡安靜也介紹下,xpath定位之軸定位

軸定位

軸定位其實就是通過html中的一些節點的節點集進行定位的,通常需要用到這些

參考資料:https://www.runoob.com/xpath/xpath-axes.html

軸名稱結果
ancestor 選取當前節點的所有先輩(父、祖父等)。
ancestor-or-self 選取當前節點的所有先輩(父、祖父等)以及當前節點本身。
attribute 選取當前節點的所有屬性。
child 選取當前節點的所有子元素。
descendant 選取當前節點的所有後代元素(子、孫等)。
descendant-or-self 選取當前節點的所有後代元素(子、孫等)以及當前節點本身。
following 選取文件中當前節點的結束標籤之後的所有節點。
following-sibling 選取當前節點之後的所有兄弟節點
namespace 選取當前節點的所有名稱空間節點。
parent 選取當前節點的父節點。
preceding 選取文件中當前節點的開始標籤之前的所有節點。
preceding-sibling 選取當前節點之前的所有同級節點。
self 選取當前節點。

使用方法:

軸名稱::標籤名

例子1:通過祖宗輩進行定位孫子輩

因為這裡我們需要通過祖宗輩來定位,軸節點這裡選擇 descendant//*[@id="main"]/descendant::input[@id="zzk_q"],這裡安靜通過ctrl+f來驗證下

通過這個我們檢視到只有一個元素,說明我們的定位沒有問題,如果小夥伴們還不確認,我們可以通過程式碼進行驗證

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath(
'//*[@id="main"]/descendant::input[@id="zzk_q"]').send_keys('測試-安靜') time.sleep(5) driver.quit()

例子2:通過節點定位之前節點內容

這裡安靜還是通過定位找找看來定位

這裡通過想要定位元素的兄弟來定位了該元素//*[@class='search_btn']/preceding::input[@id="zzk_q"]

同樣,我們可以通過程式碼進行驗證,是否定位正確

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath('//*[@class="search_btn"]/preceding::input[@id="zzk_q"]').send_keys('測試-安靜')
time.sleep(5)
driver.quit()

這裡安靜簡單的通過軸節點定位舉了幾個例子,具體的實踐操作需要小夥伴們私下自己多鍛鍊,多寫,元素定位沒有什麼方面的地方,只有寫的多了,見得多了,自然也就明白了。