使用Xpath搜索包含宗地字符串的特定元素ID

时间:2017-10-31 11:25:03

标签: javascript xpath

我不熟练使用Xpath,并且在尝试检索ID包含以“adfr_ed_frame”开头的字符串的所有元素时遇到了一些困难。但由于某种原因,它不会检索页面上的任何元素,除非我在具有特定ID的元素的节点内执行它。但我需要在任何页面中运行代码,然后搜索该特定ID并检索该元素。 我猜测“后代”轴只适用于上下文节点,但如果是这种情况,我不知道如何在所有文档中扩大搜索范围。 我的示例代码:

    Function get_elements(xpath, descendant){
    let results = [];
    let query = document.evaluate(xpath, descendant || document, 
    null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (let i=0, length=query.snapshotLength; i<length; ++i){
    if (query.snapshotItem(i).id != ""){
    results.push(query.snapshotItem(i));
    }
    }
    return results;
    }
    results = (get_elements("//*[contains(@id, 'adfr_ed_frame')]"));

2 个答案:

答案 0 :(得分:0)

在xpath字符串中使用属性使用之前的单词@来设置它是属性名称

//*[contains(@id, 'adfr_ed_frame')]

答案 1 :(得分:0)

//*[@id[contains(./text(), 'adfr_ed_frame')]]

其中读作:

所有元素都具有属性id,其文字内容包含adfr_ed_frame