MCPcopy Create free account
hub / github.com/THUDM/AutoWebGLM / dfs

Method dfs

webarena/browser_env/processors.py:366–412  ·  view source on GitHub ↗
(node_cursor: int, depth: int)

Source from the content-addressed store, hash-verified

364 }
365
366 def dfs(node_cursor: int, depth: int) -> tuple[str, list[str]]:
367 tree_str, labeled_elems = '', []
368 node = dom_tree[node_cursor]
369 valid_node = True
370 pure_text = False
371 try:
372 if node['nodeName'] == '#text':
373 node['nodeName'] = 'text'
374
375 node_str = f"<{node['nodeName']}"
376 if node["attributes"]:
377 node_str += f" {node['attributes']}"
378 node_str += f" backend-id=\"bid-{node['backendNodeId']}\"> {node['nodeValue']}"
379
380 # if node['nodeName'] == '#text':
381 # pure_text = True
382 # node_str = node['nodeValue']
383
384 valid_node = bool(node["attributes"] or node["nodeValue"] or pure_text)
385
386 if valid_node:
387 node_html = lxml.html.fromstring(node_str)
388 label = node_html.attrib.get('data-testid', '')
389 if len(label) > 0:
390 labeled_elems.append(node["backendNodeId"])
391 obs_nodes_info[str(node_cursor)] = {
392 "backend_id": node["backendNodeId"],
393 "union_bound": node["union_bound"],
394 "text": node['nodeValue'],
395 "label": label,
396 }
397 tree_str += f"{node_str}"
398
399 except Exception as e:
400 valid_node = False
401
402 for child_ids in node["childIds"]:
403 child_cursor = nodeid_to_cursor[child_ids]
404 child_depth = depth + 1 if valid_node else depth
405 child_str, elems = dfs(child_cursor, child_depth)
406 tree_str += child_str
407 labeled_elems.extend(elems)
408
409 if valid_node and not pure_text:
410 tree_str += f"</{node['nodeName']}>"
411
412 return tree_str, labeled_elems
413
414 html, labeled_elems = dfs(0, 0)
415

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected