从xpath获取表标签

时间:2018-10-04 10:26:11

标签: xpath

我通过使用以下功能为元素创建xpath:

    function getXPath(e) {
        if ("" !== e.id)
            return 'id("' + e.id + '")';
        if (e === document.body)
            return "//" + e.tagName;
        for (var t = 0, a = e.parentNode.childNodes, n = 0; n < a.length; n++) {
            var r = a[n];
            if (r === e)
                return getXPath(e.parentNode) + "/" + e.tagName + "[" + (t + 1) + "]"; 1 === r.nodeType && r.tagName === e.tagName && t++;
        }
    }

function getElementAttributes(t) {
    if (t) {
        var r = { tagName: t.tagName, cssSelector: getCssSelector(t), Xpath: getXPath(t) }, a = 0;
        for (a = 0; a < t.attributes.length; a++)
            r[t.attributes[a].nodeName] = t.attributes[a].nodeValue;
        return r
    }
    return {}
}

然后我可以获取光标(当前光标位置)Web元素的xpath:

chrome.extension.onMessage.addListener(
    function EventGetHtmlInfo(message, sender, sendResponse) {
        // Remove this function from the list of listeners.
        chrome.extension.onMessage.removeListener(EventGetHtmlInfo);

        // Result type.
        var elem = document.elementFromPoint(message.x / window.devicePixelRatio, message.y / window.devicePixelRatio);
        console.log(elem);
        sendResponse({
            title: document.title,
            uri: window.location.href,          
            attributes: getElementAttributes(elem)

        });
    });

在上面运行这些函数后,它将返回html元素的xpath(在当前光标位置)。例如,我得到如下的html脚本:

<div id="abc">
    <div>
          a
    </div>
    <div>
          b
    </div>
</div>

我将光标放在浏览器中的字符“ b”上,运行这些功能后,它将返回值:“ id(// abc //)/ DIV [2]”

现在我的桌子看起来像这样:

<table>
        <tr>
            <td>b</td>
            <td>a</td>
            <td>a</td>
        </tr>
        <tr>
            <td>a</td>
            <td>a</td>
            <td>a</td>
        </tr>
    </table>

人员x希望通过将光标置于表格中的任何单元格来获取表格中的所有数据。如何通过“重用”以上这些函数来获取其xpath(不包含“ TABLE [1] / TBODY [1] / TR [...] / TD [...]”,仅包含“ TABLE [1]”) ?如果不可能,我如何通过其他方式获取它的xpath?

谢谢。

0 个答案:

没有答案