首页 > 解决方案 > Javascript,XPath,根据搜索文本选择下一个文本

问题描述

我需要通过文本包含(内部文本)使用 XPath 搜索节点

<div class="row"> // 1-0-4
    <div class="col-xs-4">
        <label for="FactoryLeadTime">Factory Lead Time:</label>
    </div>
    <div class="col-xs-8">
        4 Weeks
    </div>
</div>

我的 JS 代码

var xpath = 'label[text()[normalize-space(.)="Factory Lead Time:"]]'; 
//var xpath = "//label[a[contains(., 'Factory Lead Time:')]]/text()";
var res = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null);

console.log(res);

我不确定搜索是否成功,因为控制台显示

XPathResultinvalidIteratorState: falseresultType: 4__proto__: XPathResultPrototype { iterateNext: iterateNext(), snapshotItem: snapshotItem(), ANY_TYPE: 0, … } tmp.js:252:1

事实上,我试图根据之前的文本“工厂交货时间:”获得“4周”的结果

有没有一种聪明的方法可以用 XPath 做到这一点?

提前致谢

标签: javascriptxpath

解决方案


试试下面的 XPath 以获得所需的 poutput:

//div[label="Factory Lead Time:"]/following-sibling::div/text()

推荐阅读