XPath 語法【Web 自動化-定位方法】

🧭 XPath 語法簡介(Web 自動化核心定位手段)

一、XPath 是什么?

  • XPath(XML Path Language)是用于在 XML/HTML 文檔中定位節點的語言,由 W3C 標準定義。
  • 瀏覽器支持的是 XPath 1.0
  • 應用場景廣泛:用于 SeleniumScrapy 爬蟲Appium 移動自動化 等。

二、XPath 與 CSS 對比

特性

CSS Selector

XPath

向上選父節點

? 不支持

? 支持 /..

向前選兄弟節點

? 不支持

? preceding-sibling::

根據屬性部分匹配

? ^= *=

? starts-with() contains()

結構匹配表達力強

中等

非常強大


三、XPath 基本語法

1?? 絕對路徑(從根節點開始)

/html/body/div

等同于 CSS:html > body > div

2?? 相對路徑(常用)

//div

表示從任意位置開始,選擇所有的 div 元素。// 類似 CSS 的后代選擇器空格。

3?? 子元素選擇

//div/p       # 直接子元素
//div//p      # 任意后代元素

4?? 通配符 *

//div/*       # div下所有直接子節點

四、按屬性選擇元素

基礎語法

//*[@屬性名='屬性值']     # 注意 @ 符號和引號

示例

//*[@id='west']
//*[@class='capital huge-city']

?? class 為多個值時,必須匹配完整。

存在屬性(不要求值)

//*[@multiple]     # 選擇有 multiple 屬性的所有元素

屬性部分匹配

//*[contains(@style, 'color')]         # 包含 color
//*[starts-with(@style, 'color')]      # 以 color 開頭

?? ends-with() 是 XPath 2.0,不被瀏覽器支持。


五、按位置/順序選擇

第 N 個某類元素

//p[2]           # 所有 p 中的第 2 個
//div/p[2]       # div 下的 p 中第 2 個

第 N 個任意子元素

//div/*[2]

倒數第幾個

//p[last()]          # 最后一個 p
//p[last()-1]        # 倒數第二個
//div/p[last()-2]    # div 中 p 的倒數第三個

范圍選擇

//option[position()<=2]
//*[@class='multi_choice']/*[position()>=last()-2]

六、組合選擇、父節點與兄弟節點

組選擇(或運算)

//option | //h4
//*[@class='a'] | //*[@class='b']

父節點選擇

//*[@id='china']/..

可以用于先選子,再回到父節點。

兄弟節點選擇

//*[@class='single_choice']/following-sibling::*        # 后續兄弟
//*[@class='single_choice']/preceding-sibling::*[1]     # 前一兄弟

CSS 僅支持后續兄弟(~),不支持前兄弟選擇。


七、Selenium 中使用 XPath 的注意點

1?? 基本用法

driver.find_elements(By.XPATH, "//div")

2?? 在 WebElement 內部查找子節點時要加 .

china = driver.find_element(By.ID, 'china')
elements = china.find_elements(By.XPATH, './/p')  # 必須加點

如果不加 .//,會從整個 DOM 根節點開始查找,而不是從當前元素。


? 小結:XPath 常用關鍵字/函數速查表

表達式

含義

/

絕對路徑或直接子節點

//

相對路徑或任意后代節點

*

通配符,匹配任意標簽

[@attr='value']

根據屬性精確匹配

contains(@attr, xxx)

屬性包含子串

starts-with(@attr, x)

屬性以字符串開頭

position()

子元素的位次

last()

最后一個子元素位置

/..

父節點

preceding-sibling::*

前兄弟節點

following-sibling::*

后兄弟節點

`

`

組選擇

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913974.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913974.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913974.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記一次 Linux 安裝 docker-compose

一.下載 1.手動下載 下載地址&#xff1a;https://github.com/docker/compose/releases 下載后&#xff0c;放在/usr/local/bin/目錄下&#xff0c;命名為&#xff1a;docker-compose 2.命令下載 sudo curl -L "https://github.com/docker/compose/releases/download/…

Go語言WebSocket編程:從零打造實時通信利器

1. WebSocket的魅力&#xff1a;為什么它這么火&#xff1f;WebSocket&#xff0c;簡單來說&#xff0c;就是一種在單條TCP連接上實現全雙工通信的神器。相比HTTP的請求-響應模式&#xff0c;它像是一條隨時暢通的電話線&#xff0c;客戶端和服務器可以隨時“喊話”&#xff0c…

速學 RocketMQ

目錄 本地啟動&測試&可視化 核心概念 集群 主從 集群 Dledger 集群 總結 客戶端消息確認機制 廣播模式 消息過濾機制 順序消息機制 延遲消息與批量消息 事務消息機制 ACL權限控制體系 RocketMQ客戶端注意事項 消息的 ID、Key、Tag 最佳實踐 消費者端…

【個人思考】不點菜的美學:Omakase 的信任、四季與食藝

本文原創作者:姚瑞南 AI-agent 大模型運營專家/音樂人/野生穿搭model,先后任職于美團、獵聘等中大廠AI訓練專家和智能運營專家崗;多年人工智能行業智能產品運營及大模型落地經驗,擁有AI外呼方向國家專利與PMP項目管理證書。(轉載需經授權) 目錄 ?? 什么是 Omakase?…

vivo Pulsar 萬億級消息處理實踐(3)-KoP指標異常修復

作者&#xff1a;vivo 互聯網大數據團隊- Chen Jianbo 本文是《vivo Pulsar萬億級消息處理實踐》系列文章第3篇。 Pulsar是Apache基金會的開源分布式流處理平臺和消息中間件&#xff0c;它實現了Kafka的協議&#xff0c;可以讓使用Kafka API的應用直接遷移至Pulsar&#xff0c;…

Marin說PCB之Allegro高亮BOM器件技巧詳解

一&#xff0c;首先在原理圖輸出BOM的時候&#xff0c;只需要勾選器件的位號這個選項即可&#xff0c;具體操作如下所示&#xff1a;二&#xff0c;輸出BOM完成后&#xff0c;打開表格選擇我們器件的位號那列即可&#xff0c;然后復制到我們的TEXT文本中。三&#xff0c;接著就…

數據結構與算法——從遞歸入手一維動態規劃【2】

前言&#xff1a; 記錄一下對左程云系列算法課程--算法講解066【必備】的剩余習題的學習。本文主要簡單記錄個人學習心得和提供C版本代碼。如需要題目的細致講解&#xff0c;請前往原視頻。 涉及內容&#xff1a; 動態規劃、三指針、 參考視頻&#xff1a; 左程云--算法講…

【理念●體系】Windows AI 開發環境搭建實錄:六層架構的逐步實現與路徑治理指南

【理念●體系】從零打造 Windows WSL Docker Anaconda PyCharm 的 AI 全鏈路開發體系-CSDN博客 Windows AI 開發環境搭建實錄&#xff1a;六層架構的逐步實現與路徑治理指南 ——理念落地篇&#xff0c;從路徑規劃到系統治理&#xff0c;打造結構化可復現的 AI 開發環境 AI…

5G標準學習筆記15 --CSI-RS測量

5G標準學習筆記15 --CSI-RS測量 前言 前面講了&#xff0c;在5GNR中&#xff0c;CSI-RS 是支持信道狀態評估、波束管理和無線資源管理&#xff08;RRM&#xff09;的關鍵參考信號。下面孬孬基于3GPP TS 38.331中的內容&#xff0c;詳細定義了基于 CSI-RS 的測量程序&#xff0c…

第P28:阿爾茨海默病診斷(優化特征選擇版)

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 一、進階說明 針對于特征對模型結果的影響我們做了特征分析 特征選擇 1. SelectFromModel 工作原理&#xff1a;基于模型的特征選擇方法&#xff0c;使用…

AI的歐幾里得要素時刻:從語言模型到可計算思維

引言 人工智能正在經歷一個關鍵的轉折點。就像歐幾里得的《幾何原本》為數學奠定了公理化基礎一樣&#xff0c;AI也正在尋找自己的"要素時刻"——一個能夠將當前的語言模型能力轉化為真正可計算、可驗證思考的轉變。 最近發表的論文《AI’s Euclid’s Elements Momen…

番外-linux系統運行.net framework 4.0的項目

基礎環境&#xff1a;linux系統&#xff0c;.net framework 4.0&#xff0c;npgsql 2.2.5.0 &#xff08;版本不同&#xff0c;構建可能失敗&#xff09; 方法背景&#xff1a;linux不支持運行.net framework 4.0&#xff0c;高版本mono不支持npgsql 2.x 主要使用&#xff1a…

國內AI訓練都有哪些企業?:技術深耕與場景實踐

國內AI訓練都有哪些企業&#xff1f;當人工智能從實驗室走向產業一線&#xff0c;AI 訓練就像為智能系統 “施肥澆水” 的關鍵環節&#xff0c;讓技術根系在各行業土壤里扎得更深。國內一批 AI 訓練企業正各展所長&#xff0c;有的專攻技術優化&#xff0c;有的深耕場景應用。它…

微算法科技基于格密碼的量子加密技術,融入LSQb算法的信息隱藏與傳輸過程中,實現抗量子攻擊策略強化

隨著量子計算技術的發展&#xff0c;傳統加密算法面臨被量子計算機破解的風險&#xff0c;LSQb 算法也需考慮應對未來可能的量子攻擊。微算法科技基于格密碼的量子加密技術&#xff0c;融入LSQb算法的信息隱藏與傳輸過程中&#xff0c;實現抗量子攻擊策略強化。格密碼在面對量子…

xAI發布Grok4+代碼神器Grok4 Code,教你如何在國內升級訂閱SuperGrok并使用到Grok4教程

就在今天&#xff0c;馬斯克旗下xAI發布了其最新的旗艦AI模型Grok4&#xff0c;并同步推出專為開發者打造的編程利器 Grok 4 Code&#xff0c;還推出了一項全新的AI訂閱計劃——每月300美元的SuperGrokHeavy。 那最新發布的Grok4以及有哪些特性呢&#xff1f;以及如何才能使用…

Rust 變量遮蔽(Variable Shadowing)

在 Rust 中&#xff0c;變量遮蔽&#xff08;Variable Shadowing&#xff09; 是一種在同一作用域內重新聲明同名變量的特性。它允許你創建一個新變量覆蓋之前的同名變量&#xff0c;新變量與舊變量類型可以不同&#xff0c;且舊變量會被完全隱藏。核心特點允許同名變量重復聲明…

【VScode | 快捷鍵】全局搜索快捷鍵(ctrl+shift+f)失效原因及解決方法

&#x1f601;博客主頁&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客內容&#x1f911;&#xff1a;&#x1f36d;嵌入式開發、Linux、C語言、C、數據結構、音視頻&#x1f36d; &#x1f60e;金句分享&#x1f60e;&a…

Windows 與 Linux 內核安全及 Metasploit/LinEnum 在滲透測試中的綜合應用

目錄 &#x1f6e0;? 1. 內核安全如何助力滲透測試與黑客行業 1.1 內核安全的戰略價值 1.2 結合 Metasploit 與 LinEnum 的作用 &#x1f50d; 2. Metasploit 信息收集模塊及其在內核安全中的應用 2.1 Windows 信息收集模塊 2.2 Linux 信息收集模塊 2.3 使用步驟 Wind…

京東攜手HarmonyOS SDK首發家電AR高精擺放功能

在電商行業的演進中&#xff0c;商品的呈現方式不斷升級&#xff1a;從文字、圖片到視頻&#xff0c;再到如今逐漸興起的3D與AR技術。作為XR應用探索的先行者&#xff0c;京東正站在這場體驗革新的最前沿&#xff0c;不斷突破商品展示的邊界&#xff0c;致力于通過創新技術讓消…

瞄準Win10難民,蘋果正推出塑料外殼、手機CPU的MacBook

最近有消息稱&#xff0c;蘋果正在研發一款定位“低價”的MacBook&#xff0c;售價可能低于800美元&#xff08;約合人民幣5800元&#xff09;&#xff0c;采用的是A18 Pro芯片&#xff0c;也就是未來iPhone 16 Pro同款的“手機芯片”&#xff0c;而不是現有的M系列。這款產品預…