使用XPath查找范圍的第四個父Div

我正在做一個chrome擴展,刪除網站的一部分。為此,我需要找到一個包含一些文本的,然后從中選擇第四個<div>。

HTML

<body>
<!--This is the div I want to select -->
  <div>
    <div>
        <div>
            <div>
                <span>some text</span>
             </div>
         </div>
    </div>
  </div>
</body>

我已經使用//span[text() = 'some text'找到了正確的<span>,但是現在我需要返回到示例HTML中的第一個<div>

已經試過//*[ancestor::span[text() = 'some text']]//span[ancestor::*[text() = 'some text']]。是的,這些只會到達第一個父級,但這對我來說根本不起作用,即使當我在XPathTester上測試時,它們作為有效的XPath表達式出現。

更重要的是,<div>沒有一致的class或id屬性。這些必須是站點的auto-generate。

編寫XPath表達式的最簡單方法是什么?

? 最佳回答:

您可以嘗試使用../語法向上提升一個級別(即:到直接父級),并像這樣鏈接它們:

const getnodes=function( expr, parent ){
        let results=[];
        let contextNode=parent || document;
        let query=document.evaluate( expr, contextNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
        for ( let i=0, length=query.snapshotLength; i < length; ++i ) {
            results.push( query.snapshotItem( i ) );
        }
        return results;
    };
  
  let col=getnodes( '//span[ text()="some text" ]/../../../../../div', document.body );
  col.forEach( n=>console.info( n.textContent ) )
<!--This is the div I want to select -->
  <div>top
    <div>a
        <div>b
            <div>c
                <span>some text</span>
             </div>
         </div>
    </div>
  </div>

主站蜘蛛池模板: 成人无码精品一区二区三区| 视频一区二区在线播放| 亚洲一区AV无码少妇电影| 亚洲乱码日产一区三区| 中文字幕在线观看一区| 亚洲国产欧美一区二区三区| 国产一区二区三区免费视频| 一区高清大胆人体| 国产一区二区好的精华液| 一区二区三区杨幂在线观看| 国产精品久久久久久麻豆一区| 国产福利一区二区在线视频| 无码一区二区三区| 国产亚洲综合精品一区二区三区 | 久久久久人妻精品一区| 日韩精品免费一区二区三区| 日韩最新视频一区二区三| 波多野结衣一区二区三区aV高清| 无码精品不卡一区二区三区| 一区二区不卡在线| 国产精品va无码一区二区| 无码AⅤ精品一区二区三区| 欧美日韩精品一区二区在线视频| 日韩人妻无码一区二区三区99 | 久久精品一区二区免费看| 一区二区三区在线|欧| 一区高清大胆人体| 精品国产一区二区麻豆| 国产午夜精品一区二区三区极品| 在线观看精品视频一区二区三区| 日韩精品一区二区亚洲AV观看| 麻豆一区二区在我观看| 精品欧洲av无码一区二区14| 亚洲美女一区二区三区| 精品国产伦一区二区三区在线观看| 精品国产一区二区三区免费 | 亚洲综合国产一区二区三区| 亚洲日本一区二区三区在线 | 中文字幕在线观看一区二区 | 亚洲一区二区三区91| 精品理论片一区二区三区|