Selenium(6):元素定位_XPATH定位
阿新 • • 發佈:2021-11-24
XPATH是什麼
XPATH是一門在XML文件中查詢資訊的語言,XPATH可用來在XML文件中對元素和屬性進行遍歷,主流的瀏覽器都支援XPATH,因為HTML頁面在DOM中表示為XHTML文件。Selenium WebDriver支援使用XPATH表示式來定位元素。
Xpath常用如下6種定位元素的方法:
1、通過絕對路徑定位
絕對路徑的開頭是一個斜線(/),從網頁的根節點html開始,逐層去查詢需要定位的元素。
此方法缺點顯而易見,當頁面元素位置發生改變時,都需要修改,因此,並不推薦使用。
程式碼如下:
以百度首頁的搜尋框為例
import os from selenium importwebdriver from selenium.webdriver.common.by import By current_path = os.path.dirname(os.path.abspath(__file__)) # 當前路徑 driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路徑 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('https://www.baidu.com/') # 開啟網站 # 絕對路徑定位:/ 開頭 # 從網頁正文的html節點,一直找到元素所在的位置的一種定位方法(從上往下,同層級下標表示) # 一般不用,難維護,谷歌瀏覽器自帶了複製 絕對路徑xpath的功能 driver.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys('python')
備註:當同一層次有多個相同的元素時,使用下標區分,下標從1開始;並且注意網頁登入狀態和非登入狀態的html的絕對路徑是不一樣的
2、通過相對路徑定位
相對路徑的開頭是兩個斜線(//),表示檔案中所有符合模式的元素都會被選出來,即使是處於樹中不同的層級也會被選出來。
程式碼如下:
以百度首頁的搜尋框為例
import os from selenium import webdriver from selenium.webdriver.common.by import By current_path = os.path.dirname(os.path.abspath(__file__)) # 當前路徑 driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路徑 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('https://www.baidu.com/') # 開啟網站 # 相對路徑定位:// 開頭 # 在網頁正文中,通過獨一無二丶區域性路徑表示元素資訊的一種定位方法(從下往上,一層一層試) driver.find_element(By.XPATH,'//span[1]/input').send_keys('JAVA') # 最簡相對路徑 driver.find_element(By.XPATH,'//form/span[1]/input').send_keys('JAVA') # 最簡相對路徑
備註:以上都可以定位到百度搜索框,相對路徑的長度和開始位置並不受限制,可以採用從後往前逐層定位直到定位到即可的方式去定位。
3、通過元素索引定位
遇到同層級相同標籤元素時,可以使用索引(下標)表示,索引的初始值為1