multi-level selection support (#786)

This commit is contained in:
LawyZheng
2024-09-09 11:34:09 +08:00
committed by GitHub
parent 281977f395
commit d7cb4f3ae7
4 changed files with 279 additions and 98 deletions

View File

@@ -1,6 +1,7 @@
from __future__ import annotations
import asyncio
import copy
import typing
from abc import ABC, abstractmethod
from enum import StrEnum
@@ -28,7 +29,7 @@ from skyvern.exceptions import (
SkyvernException,
)
from skyvern.forge.sdk.settings_manager import SettingsManager
from skyvern.webeye.scraper.scraper import IncrementalScrapePage, ScrapedPage
from skyvern.webeye.scraper.scraper import IncrementalScrapePage, ScrapedPage, json_to_html, trim_element
from skyvern.webeye.utils.page import SkyvernFrame
LOG = structlog.get_logger()
@@ -130,6 +131,13 @@ class SkyvernElement:
self.__frame = frame
self.locator = locator
def build_HTML(self, need_trim_element: bool = True, need_skyvern_attrs: bool = True) -> str:
element_dict = self.get_element_dict()
if need_trim_element:
element_dict = trim_element(copy.deepcopy(element_dict))
return json_to_html(element_dict, need_skyvern_attrs)
async def is_select2_dropdown(self) -> bool:
tag_name = self.get_tag_name()
element_class = await self.get_attr("class")