XPath:如何从一个孩子导航到同一个父母的另一个孩子
Posted
技术标签:
【中文标题】XPath:如何从一个孩子导航到同一个父母的另一个孩子【英文标题】:XPath: how to navigate from a child to another child of the same parent 【发布时间】:2021-11-09 12:28:42 【问题描述】:我有以下 html:
<div _ngcontent-yei-c89="" class="folder-content__tile-view"><div _ngcontent-yei-c89="" class="widget">
<div _ngcontent-yei-c89="" soho-widget-header="" class="widget-header">
<button _ngcontent-yei-c89="" soho-button="icon" icon="more" soho-context-menu="" menu="action-popupmenu" trigger="click" class="btn-actions btn-icon has-tooltip" type="button" aria-pressed="false" aria-haspopup="true" aria-controls="action-popupmenu">
<svg soho-icon="" aria-hidden="true" focusable="false" role="presentation" class="icon">
<use href="#icon-more"></use>
</svg>
<!---->
<span></span>
</button><!----><!----></div>
<div _ngcontent-yei-c89="" soho-widget-content="" class="widget-content"><!----><!---->
<svg _ngcontent-yei-c89="" soho-icon="" icon="map" aria-hidden="true" focusable="false" role="presentation" class="icon">
<use href="#icon-map"></use>
</svg><!----><!---->
<h1 _ngcontent-yei-c89="" soho-tooltip="" class="ellipsis has-tooltip">Process Map</h1>
<h2 _ngcontent-yei-c89=""> Sep 14, 2021, 11:47:25 AM </h2>
</div>
</div>
我想通过使用图标作为唯一 ID 来获取 <button>
的 xpath://*[local-name()='svg'][*[local-name()='use'][@href="#icon-map"]]
。此路径有效,但我不确定如何从此处获取按钮。
【问题讨论】:
试试这个//*[local-name()='svg'][*[local-name()='use'][@href="#icon-map"]]//parent::div//parent::button
#icon-map 与 button 无关,您的意思是 icon-more 吗?为什么不能在该 html 中使用任何其他属性
【参考方案1】:
你的 xpath 过于复杂了
//button[@menu="action-popupmenu"]
你可以像这样使用任何其他属性
icon-map svg 与按钮完全无关,但如果您仍想使用它,那么:
//*[local-name()='svg'][*[local-name()='use'][@href="#icon-map"]]/../preceding-sibling::div/button
【讨论】:
以上是关于XPath:如何从一个孩子导航到同一个父母的另一个孩子的主要内容,如果未能解决你的问题,请参考以下文章