From d9ac9183171695b98b34c96bf242fb2eb16c946f Mon Sep 17 00:00:00 2001 From: RohitR311 Date: Fri, 9 May 2025 23:36:41 +0530 Subject: [PATCH] feat: rm selector hierarchy for non unique selectors --- server/src/workflow-management/selector.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/server/src/workflow-management/selector.ts b/server/src/workflow-management/selector.ts index 5851e7af..181d38a1 100644 --- a/server/src/workflow-management/selector.ts +++ b/server/src/workflow-management/selector.ts @@ -2299,7 +2299,12 @@ export const getNonUniqueSelectors = async (page: Page, coordinates: Coordinates return selectorParts.join(contextPath[0].type === 'shadow' ? ' >> ' : ' :>> '); } - // Regular DOM path generation + const elementSelector = getNonUniqueSelector(element); + + if (elementSelector.includes('.') && elementSelector.split('.').length > 1) { + return elementSelector; + } + const path: string[] = []; let currentElement = element; const MAX_DEPTH = 2; @@ -2656,7 +2661,12 @@ export const getNonUniqueSelectors = async (page: Page, coordinates: Coordinates return selectorParts.join(contextPath[0].type === 'shadow' ? ' >> ' : ' :>> '); } - // Regular DOM path generation + const elementSelector = getNonUniqueSelector(element); + + if (elementSelector.includes('.') && elementSelector.split('.').length > 1) { + return elementSelector; + } + const path: string[] = []; let currentElement = element; const MAX_DEPTH = 2; @@ -2753,12 +2763,14 @@ export const getChildSelectors = async (page: Page, parentSelector: string): Pro const frameElement = ownerDocument?.defaultView?.frameElement; if (frameElement) { const frameSelector = getNonUniqueSelector(frameElement as HTMLElement); - const isFrame = frameElement.tagName === 'FRAME'; // Use the appropriate delimiter based on whether it's a frame or iframe return `${frameSelector} :>> ${elementSelector}`; } - // Regular DOM context + if (elementSelector.includes('.') && elementSelector.split('.').length > 1) { + return elementSelector; + } + const parentSelector = getNonUniqueSelector(element.parentElement); return `${parentSelector} > ${elementSelector}`; }