selenium---xpath軸定位
阿新 • • 發佈:2020-07-30
前面介紹了元素定位通過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()
這裡安靜簡單的通過軸節點定位舉了幾個例子,具體的實踐操作需要小夥伴們私下自己多鍛鍊,多寫,元素定位沒有什麼方面的地方,只有寫的多了,見得多了,自然也就明白了。