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 来获取 &lt;button&gt; 的 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:如何从一个孩子导航到同一个父母的另一个孩子的主要内容,如果未能解决你的问题,请参考以下文章

如何使用reactjs解析从孩子到父母的数据?

父母和孩子是不是需要关闭管道的另一端?

从父母到孩子的传递数据

如何在可扩展的listview android中将孩子添加到特定的父母

防止父母李+李携带给孩子

当孩子依赖父母,父母依赖孩子时,浏览器如何计算宽度