mirror of
https://github.com/browser-use/browser-use
synced 2026-05-06 17:52:15 +02:00
Merged viewport in dom service
This commit is contained in:
@@ -21,23 +21,32 @@ class DomService:
|
||||
self.xpath_cache = {}
|
||||
|
||||
# region - Clickable elements
|
||||
async def get_clickable_elements(self, highlight_elements: bool = True, focus_element: int = -1) -> DOMState:
|
||||
element_tree = await self._build_dom_tree(highlight_elements, focus_element)
|
||||
async def get_clickable_elements(
|
||||
self,
|
||||
highlight_elements: bool = True,
|
||||
focus_element: int = -1,
|
||||
viewport_expansion: int = 0,
|
||||
) -> DOMState:
|
||||
element_tree = await self._build_dom_tree(highlight_elements, focus_element, viewport_expansion)
|
||||
selector_map = self._create_selector_map(element_tree)
|
||||
|
||||
return DOMState(element_tree=element_tree, selector_map=selector_map)
|
||||
|
||||
async def _build_dom_tree(self, highlight_elements: bool, focus_element: int) -> DOMElementNode:
|
||||
async def _build_dom_tree(
|
||||
self,
|
||||
highlight_elements: bool,
|
||||
focus_element: int,
|
||||
viewport_expansion: int,
|
||||
) -> DOMElementNode:
|
||||
js_code = resources.read_text('browser_use.dom', 'buildDomTree.js')
|
||||
|
||||
args = {
|
||||
"doHighlightElements": highlight_elements,
|
||||
"focusHighlightIndex": focus_element,
|
||||
'doHighlightElements': highlight_elements,
|
||||
'focusHighlightIndex': focus_element,
|
||||
'viewportExpansion': viewport_expansion,
|
||||
}
|
||||
|
||||
eval_page = await self.page.evaluate(
|
||||
js_code, args
|
||||
) # This is quite big, so be careful
|
||||
eval_page = await self.page.evaluate(js_code, args) # This is quite big, so be careful
|
||||
html_to_dict = self._parse_node(eval_page)
|
||||
|
||||
if html_to_dict is None or not isinstance(html_to_dict, DOMElementNode):
|
||||
|
||||
Reference in New Issue
Block a user