From e08778993eef145933ce379018cc4bc3c0adfd2a Mon Sep 17 00:00:00 2001 From: LawyZheng Date: Fri, 10 Oct 2025 15:46:55 +0800 Subject: [PATCH] abort scraping when too many elements (#3678) --- skyvern/webeye/scraper/domUtils.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/skyvern/webeye/scraper/domUtils.js b/skyvern/webeye/scraper/domUtils.js index 2bc7758f..f6631086 100644 --- a/skyvern/webeye/scraper/domUtils.js +++ b/skyvern/webeye/scraper/domUtils.js @@ -1533,9 +1533,13 @@ async function buildTreeFromBody( ) { window.GlobalSkyvernFrameIndex = frame_index; } + const maxElementNumber = 15000; const elementsAndResultArray = await buildElementTree( document.documentElement, frame, + false, + undefined, + maxElementNumber, ); DomUtils.elementListCache = elementsAndResultArray[0]; return elementsAndResultArray; @@ -1546,6 +1550,7 @@ async function buildElementTree( frame, full_tree = false, hoverStylesMap = undefined, + maxElementNumber = 0, ) { // Generate hover styles map at the start if (hoverStylesMap === undefined) { @@ -1570,6 +1575,13 @@ async function buildElementTree( return; } + if (maxElementNumber > 0 && elements.length >= maxElementNumber) { + _jsConsoleWarn( + "Max element number reached, aborting the element tree building", + ); + return; + } + const tagName = element.tagName?.toLowerCase(); if (!tagName) { _jsConsoleLog("get a null tagName");