1. 程式人生 > 其它 >Selenium(6):元素定位_XPATH定位

Selenium(6):元素定位_XPATH定位

XPATH是什麼

  XPATH是一門在XML文件中查詢資訊的語言,XPATH可用來在XML文件中對元素和屬性進行遍歷,主流的瀏覽器都支援XPATH,因為HTML頁面在DOM中表示為XHTML文件。Selenium WebDriver支援使用XPATH表示式來定位元素。

Xpath常用如下6種定位元素的方法:

1、通過絕對路徑定位

  絕對路徑的開頭是一個斜線(/),從網頁的根節點html開始,逐層去查詢需要定位的元素。

  此方法缺點顯而易見,當頁面元素位置發生改變時,都需要修改,因此,並不推薦使用。

程式碼如下:

以百度首頁的搜尋框為例

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/
') # 開啟網站 # 絕對路徑定位:/ 開頭 # 從網頁正文的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