[英]What is the difference between .// and //* in XPath?
在通過 Firebug 找到相對 XPath 時:它會創建類似
.//*[@id='Passwd']
--------- 如果我們在開頭不使用點,它的含義是什么?
只需在 Xpath 中添加//*
-- 它突出顯示 --- 各種頁面元素 ---------- 它意味着什么?
以下是 Gmail 密碼字段的 XPath。 *
的意義是什么?
.//*[@id='Passwd']
//child::input[@type='password']
這里有幾個不同的、關鍵的 XPath 概念在起作用……
絕對與相對 XPath ( /
vs .
)
/
引入了一個絕對位置路徑,從文檔的根目錄開始。.
引入了一個相對位置路徑,從上下文節點開始。 命名元素與任何元素( ename
與*
)
/ename
選擇一個ename
根元素
./ename
選擇上下文節點的所有ename
子元素。/*
選擇根元素,不管名稱。
./*
或*
選擇上下文節點的所有子元素,無論名稱如何。 后代或自我軸( //*
)
//ename
選擇文檔中的所有ename
元素。
.//ename
選擇上下文節點處或下方的所有ename
元素。//*
選擇文檔中的所有元素,無論名稱如何。
.//*
選擇上下文節點處或下方的所有元素,無論名稱如何。考慮到這些概念,以下是您特定問題的答案...
.//*[@id='Passwd']
表示選擇上下文節點處或下方所有id
屬性值等於'Passwd'
元素。//child::input[@type='password']
可以簡化為//input[@type='password']
,意思是選擇文檔中所有type
屬性值等於'password'
input
元素.這些表達式都選擇不同的節點集:
.//*[@id='密碼']
這 '。' at the beginning 表示當前處理從當前節點開始。 “*”選擇從當前節點下降的所有元素節點,@ @id
-attribute-value 等於“Passwd”。
如果我們在開頭不使用點,它的含義是什么?
然后,您將選擇整個文檔中@id
-attribute-value 等於“Passwd”的所有元素節點。
只需在 XPath 中添加 //* -- 它突出顯示 --- 各種頁面元素
這將選擇整個文檔中的所有元素節點。
下面提到:XPatht 的 Gmail 密碼字段是真的 * 有什么意義?
.//*[@id='Passwd']
這將選擇從當前節點下降的所有元素節點,其中@id
-attribute-value 等於'Passwd'。
//child::input[@type='password']
這將選擇所有名為input
@type
-attribute-values 等於“密碼”的子元素節點。 child::
軸前綴可以省略,因為它是默認行為。
w3school.com上解釋了選擇適當表達式的語法。
軸(處理中的當前點)在另一個 w3school.com 頁面上進行了解釋。
XPath 中的點稱為“上下文項表達式” 。 如果您在表達式的開頭放置一個點,它將使其特定於上下文。 換句話說,它將在您調用“通過 XPath 查找元素”方法的節點的上下文中搜索id="Passwd"
的元素。
.//*[@id='Passwd']
中的*
有助於匹配id='Passwd'
任何元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.