update custom selection prompt (#689)

This commit is contained in:
LawyZheng
2024-08-08 14:53:08 +08:00
committed by GitHub
parent 83cbcfee28
commit 5299f9265e
3 changed files with 19 additions and 4 deletions

View File

@@ -886,8 +886,18 @@ async def select_from_dropdown(
task=task,
)
await incremental_scraped.get_incremental_element_tree(app.AGENT_FUNCTION.cleanup_element_tree)
html = incremental_scraped.build_html_tree()
trimmed_element_tree = await incremental_scraped.get_incremental_element_tree(
app.AGENT_FUNCTION.cleanup_element_tree
)
if dropdown_menu_element:
# if there's a dropdown menu detected, only elements in the dropdown should be sent to LLM
dropdown_id = dropdown_menu_element.get_id()
for head_node in trimmed_element_tree:
if head_node.get("id") == dropdown_id:
trimmed_element_tree = [head_node]
break
html = incremental_scraped.build_html_tree(element_tree=trimmed_element_tree)
target_value = action.option.label or action.option.value
if target_value is None:

View File

@@ -442,8 +442,8 @@ class IncrementalScrapePage:
js_script = "() => window.globalOneTimeIncrementElements.length"
return await self.skyvern_frame.get_frame().evaluate(js_script)
def build_html_tree(self) -> str:
return "".join([json_to_html(element) for element in self.element_tree_trimmed])
def build_html_tree(self, element_tree: list[dict] = []) -> str:
return "".join([json_to_html(element) for element in (element_tree or self.element_tree_trimmed)])
def trim_element_tree(elements: list[dict]) -> list[dict]: