From aa1d4372069f49577b3992f24d06af8f387e0436 Mon Sep 17 00:00:00 2001 From: Rohit Date: Tue, 8 Jul 2025 13:24:57 +0530 Subject: [PATCH] feat: gen relative url for href selectors --- src/helpers/clientSelectorGenerator.ts | 36 ++++++++++++++++++-------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/helpers/clientSelectorGenerator.ts b/src/helpers/clientSelectorGenerator.ts index 62efe3b2..a054dba0 100644 --- a/src/helpers/clientSelectorGenerator.ts +++ b/src/helpers/clientSelectorGenerator.ts @@ -1553,15 +1553,29 @@ class ClientSelectorGenerator { ); return attrs.map( - (attr): Node => ({ - name: - "[" + - cssesc(attr.name, { isIdentifier: true }) + - '="' + - cssesc(attr.value) + - '"]', - penalty: 0.5, - }) + (attr): Node => { + let attrValue = attr.value; + + if (attr.name === "href" && attr.value.includes("://")) { + try { + const url = new URL(attr.value); + const siteOrigin = `${url.protocol}//${url.host}`; + attrValue = attr.value.replace(siteOrigin, ""); + } catch (e) { + // Keep original if URL parsing fails + } + } + + return { + name: + "[" + + cssesc(attr.name, { isIdentifier: true }) + + '="' + + cssesc(attrValue) + + '"]', + penalty: 0.5, + }; + } ); } @@ -3526,8 +3540,8 @@ class ClientSelectorGenerator { const elementInfo = this.getElementInformation( iframeDocument, coordinates, - this.listSelector, - this.getList + '', + false ); const selectorBasedOnCustomAction = this.getSelectors(iframeDocument, coordinates);