fix children not found error in svg conversion (#2027)
This commit is contained in:
@@ -105,6 +105,12 @@ def _remove_skyvern_attributes(element: Dict) -> Dict:
|
|||||||
return element_copied
|
return element_copied
|
||||||
|
|
||||||
|
|
||||||
|
def _mark_element_as_dropped(element: dict) -> None:
|
||||||
|
if "children" in element:
|
||||||
|
del element["children"]
|
||||||
|
element["isDropped"] = True
|
||||||
|
|
||||||
|
|
||||||
async def _convert_svg_to_string(
|
async def _convert_svg_to_string(
|
||||||
skyvern_frame: SkyvernFrame,
|
skyvern_frame: SkyvernFrame,
|
||||||
element: Dict,
|
element: Dict,
|
||||||
@@ -124,21 +130,18 @@ async def _convert_svg_to_string(
|
|||||||
try:
|
try:
|
||||||
locater = skyvern_frame.get_frame().locator(f'[{SKYVERN_ID_ATTR}="{element_id}"]')
|
locater = skyvern_frame.get_frame().locator(f'[{SKYVERN_ID_ATTR}="{element_id}"]')
|
||||||
if await locater.count() == 0:
|
if await locater.count() == 0:
|
||||||
del element["children"]
|
_mark_element_as_dropped(element)
|
||||||
element["isDropped"] = True
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if not await locater.is_visible(timeout=settings.BROWSER_ACTION_TIMEOUT_MS):
|
if not await locater.is_visible(timeout=settings.BROWSER_ACTION_TIMEOUT_MS):
|
||||||
del element["children"]
|
_mark_element_as_dropped(element)
|
||||||
element["isDropped"] = True
|
|
||||||
return
|
return
|
||||||
|
|
||||||
skyvern_element = SkyvernElement(locator=locater, frame=skyvern_frame.get_frame(), static_element=element)
|
skyvern_element = SkyvernElement(locator=locater, frame=skyvern_frame.get_frame(), static_element=element)
|
||||||
|
|
||||||
_, blocked = await skyvern_frame.get_blocking_element_id(await skyvern_element.get_element_handler())
|
_, blocked = await skyvern_frame.get_blocking_element_id(await skyvern_element.get_element_handler())
|
||||||
if not skyvern_element.is_interactable() and blocked:
|
if not skyvern_element.is_interactable() and blocked:
|
||||||
del element["children"]
|
_mark_element_as_dropped(element)
|
||||||
element["isDropped"] = True
|
|
||||||
return
|
return
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning(
|
LOG.warning(
|
||||||
@@ -180,8 +183,7 @@ async def _convert_svg_to_string(
|
|||||||
length=len(svg_html),
|
length=len(svg_html),
|
||||||
key=svg_key,
|
key=svg_key,
|
||||||
)
|
)
|
||||||
del element["children"]
|
_mark_element_as_dropped(element)
|
||||||
element["isDropped"] = True
|
|
||||||
return
|
return
|
||||||
|
|
||||||
LOG.debug("call LLM to convert SVG to string shape", element_id=element_id)
|
LOG.debug("call LLM to convert SVG to string shape", element_id=element_id)
|
||||||
@@ -235,8 +237,7 @@ async def _convert_svg_to_string(
|
|||||||
key=svg_key,
|
key=svg_key,
|
||||||
length=len(svg_html),
|
length=len(svg_html),
|
||||||
)
|
)
|
||||||
del element["children"]
|
_mark_element_as_dropped(element)
|
||||||
element["isDropped"] = True
|
|
||||||
return
|
return
|
||||||
|
|
||||||
element["attributes"] = dict()
|
element["attributes"] = dict()
|
||||||
@@ -244,7 +245,8 @@ async def _convert_svg_to_string(
|
|||||||
# refresh the cache expiration
|
# refresh the cache expiration
|
||||||
await app.CACHE.set(svg_key, svg_shape)
|
await app.CACHE.set(svg_key, svg_shape)
|
||||||
element["attributes"]["alt"] = svg_shape
|
element["attributes"]["alt"] = svg_shape
|
||||||
del element["children"]
|
if "children" in element:
|
||||||
|
del element["children"]
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user