前面介紹了元素定位通過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()
這里安靜簡單的通過軸節點定位舉了幾個例子,具體的實踐操作需要小伙伴們私下自己多鍛煉,多寫,元素定位沒有什么方面的地方,只有寫的多了,見得多了,自然也就明白了。