generate()

in robot-server-plugin/src/main/resources/static/xpathEditor.js [134:156]


    generate(element) {
        const allXpaths = this._collect(element)
        let xpaths = allXpaths.filter((xpath) => this._isGoodAndUnique(xpath, element))
        if (xpaths.length === 0) {
            const uniqueChildrenXpath = this._findUniqueChildren(element)
            if (uniqueChildrenXpath) {
                xpaths = allXpaths
                    .map((x) => new PrioritizedXpath(x.xpath + `[.${uniqueChildrenXpath.xpath}]`, x.priority))
                    .filter((xpath) => this._isGoodAndUnique(xpath, element))
            }
        }
        if (xpaths.length === 0) {
            const uniqueParentXpath = this._findUniqueParent(element)
            if (uniqueParentXpath) {
                xpaths = allXpaths
                    .map((x) => new PrioritizedXpath(uniqueParentXpath.xpath + x.xpath, x.priority))
                    .filter((xpath) => this._isGoodAndUnique(xpath, element))
                xpaths = xpaths.flatMap((x) => this._generateMiddleSkippedPaths(x))
                    .filter((xpath) => this._isGoodAndUnique(xpath, element))
            }
        }
        return xpaths
    }