From bfa941d4ba1b73f7c2b64d4f15e490b9558b5926 Mon Sep 17 00:00:00 2001 From: Rohit Rajan Date: Wed, 3 Sep 2025 00:16:16 +0530 Subject: [PATCH] feat: perform clicks based on coords --- .../src/browser-management/inputHandlers.ts | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/server/src/browser-management/inputHandlers.ts b/server/src/browser-management/inputHandlers.ts index 36bfd1c6..c014af3d 100644 --- a/server/src/browser-management/inputHandlers.ts +++ b/server/src/browser-management/inputHandlers.ts @@ -636,13 +636,40 @@ const handleClickAction = async ( const { selector, url, elementInfo, coordinates, isSPA = false } = data; const currentUrl = page.url(); - await page.click(selector); + if (elementInfo && coordinates && (elementInfo.tagName === 'INPUT' || elementInfo.tagName === 'TEXTAREA')) { + try { + const elementHandle = await page.$(selector); + if (elementHandle) { + const boundingBox = await elementHandle.boundingBox(); + if (boundingBox) { + await page.mouse.click( + boundingBox.x + coordinates.x, + boundingBox.y + coordinates.y + ); + } else { + await page.click(selector); + } + } else { + await page.click(selector); + } + } catch (error: any) { + logger.log("warn", `Failed to click at coordinates: ${error.message}`); + await page.click(selector); + } + } else { + await page.click(selector); + } const generator = activeBrowser.generator; await generator.onDOMClickAction(page, data); logger.log("debug", `Click action processed: ${selector}`); + if (elementInfo && (elementInfo.tagName === 'INPUT' || elementInfo.tagName === 'TEXTAREA')) { + logger.log("debug", `Input field click - skipping DOM snapshot for smooth typing`); + return; + } + if (isSPA) { logger.log("debug", `SPA interaction detected for selector: ${selector}`);