為什么我的 XPath,
//android.view.ViewGroup[*/android.widget.TextView[@androidXtext='Microwaves']]
選擇這個節點,
<android.view.ViewGroup androidXclickable="true" androidXcontentDescription="ucl.flex-row" androidXenabled="true" androidXfocusable="true" androidXid="@ucl.flex-row" androidXlayout_height="147px" androidXlayout_width="1059px" androidXlayout_x="11px" androidXlayout_y="913px">`
而不是上面或下面的任何其他?
完整片段:
<android.view.ViewGroup androidXenabled="true" androidXlayout_height="147px" androidXlayout_width="1059px" androidXlayout_x="11px" androidXlayout_y="913px">
<android.view.ViewGroup androidXclickable="true" androidXcontentDescription="ucl.flex-row" androidXenabled="true" androidXfocusable="true" androidXid="@ucl.flex-row" androidXlayout_height="147px" androidXlayout_width="1059px" androidXlayout_x="11px" androidXlayout_y="913px">
<android.view.ViewGroup androidXenabled="true" androidXlayout_height="147px" androidXlayout_width="1059px" androidXlayout_x="11px" androidXlayout_y="913px">
<android.view.ViewGroup androidXcontentDescription="ucl.flex-row.left-action.svg" androidXenabled="true" androidXid="@ucl.flex-row.left-action.svg" androidXlayout_height="63px" androidXlayout_width="63px" androidXlayout_x="53px" androidXlayout_y="955px">
<android.view.ViewGroup androidXenabled="true" androidXlayout_height="63px" androidXlayout_width="63px" androidXlayout_x="53px" androidXlayout_y="955px">
<android.view.ViewGroup androidXenabled="true" androidXlayout_height="0px" androidXlayout_width="0px" androidXlayout_x="53px" androidXlayout_y="955px">
<android.view.ViewGroup androidXenabled="true" androidXlayout_height="0px" androidXlayout_width="0px" androidXlayout_x="53px" androidXlayout_y="955px"/>
</android.view.ViewGroup>
</android.view.ViewGroup>
</android.view.ViewGroup>
<android.widget.TextView androidXcontentDescription="ucl.flex-row.main.text" androidXenabled="true" androidXid="@ucl.flex-row.main.text" androidXlayout_height="53px" androidXlayout_width="891px" androidXlayout_x="137px" androidXlayout_y="960px" androidXtext="Microwaves"/>
</android.view.ViewGroup>
</android.view.ViewGroup>
</android.view.ViewGroup>
uj5u.com熱心網友回復:
這里有兩個概念,節點測驗和軸:
*相當于element(),不考慮名稱選擇元素。默認軸是
child::,因此您的謂詞有效地以child::element().
所以,
//android.view.ViewGroup[*/android.widget.TextView[@androidXtext='Microwaves']]
表示選擇具有屬性值等于android.view.ViewGroup的孫android.widget.TextView元素的所有元素。androidXtext'Microwaves'
具體問的時候,
而不是任何其他高于或低于
除了您的示例 XML 沒有其他滿足上述條件的元素之外,請注意,如果您將其解釋*/為選擇所有后代的通配符,則不會。如上所述,它只會跳過子元素。選擇和測驗android.widget.TextView謂詞中的所有后代元素,而不是*/android.widget.TextView使用descendent::android.widget.TextView或descendent-or-self::android.widget.TextView(縮寫形式:).//android.widget.TextView。
也可以看看
- XPath 中的 .// 和 //* 有什么區別?
- XPath 中 .// 的含義是什么?
- XPath 中“//”和“/”的區別?
uj5u.com熱心網友回復:
XPath 默認軸是child,所以你的謂詞
[*/android.widget.TextView[@androidXtext='Microwaves']]
相當于
[child::*/child::android.widget.TextView[@androidXtext='Microwaves']]
此謂詞將選擇具有android.widget.TextView孫子節點和指定屬性的節點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337529.html
