MCPcopy Create free account
hub / github.com/THUDM/AgentTuning / execute_action

Function execute_action

eval_heldout/webarena/browser_env/actions.py:1121–1253  ·  view source on GitHub ↗

Execute the action on the ChromeDriver.

(
    action: Action,
    page: Page,
    browser_ctx: BrowserContext,
    obseration_processor: ObservationProcessor,
)

Source from the content-addressed store, hash-verified

1119
1120@beartype
1121def execute_action(
1122 action: Action,
1123 page: Page,
1124 browser_ctx: BrowserContext,
1125 obseration_processor: ObservationProcessor,
1126) -> Page:
1127 """Execute the action on the ChromeDriver."""
1128 action_type = action["action_type"]
1129 match action_type:
1130 case ActionTypes.NONE:
1131 pass
1132
1133 case ActionTypes.SCROLL:
1134 direction = "up" if "up" in action["direction"] else "down"
1135 execute_scroll(direction, page)
1136 case ActionTypes.KEY_PRESS:
1137 keys = action["key_comb"]
1138 execute_key_press(keys, page)
1139
1140 case ActionTypes.MOUSE_CLICK:
1141 execute_mouse_click(action["coords"][0], action["coords"][1], page)
1142 case ActionTypes.MOUSE_HOVER:
1143 execute_mouse_hover(action["coords"][0], action["coords"][1], page)
1144 case ActionTypes.KEYBOARD_TYPE:
1145 execute_type(action["text"], page)
1146
1147 case ActionTypes.CLICK:
1148 # check each kind of locator in order
1149 # TODO[shuyanzh]: order is temp now
1150 if action["element_id"]:
1151 element_id = action["element_id"]
1152 element_center = obseration_processor.get_element_center(element_id) # type: ignore[attr-defined]
1153 execute_mouse_click(element_center[0], element_center[1], page)
1154 elif action["element_role"] and action["element_name"]:
1155 element_role = int(action["element_role"])
1156 element_name = action["element_name"]
1157 nth = action["nth"]
1158 execute_focus(element_role, element_name, nth, page)
1159 execute_click_current(page)
1160 elif action["pw_code"]:
1161 parsed_code = parse_playwright_code(action["pw_code"])
1162 locator_code = parsed_code[:-1]
1163 # [shuyanzh], don't support action args and kwargs now
1164 execute_playwright_click(locator_code=locator_code, page=page)
1165 else:
1166 raise ValueError("No proper locator found for click action")
1167 case ActionTypes.HOVER:
1168 if action["element_id"]:
1169 element_id = action["element_id"]
1170 element_center = obseration_processor.get_element_center(element_id) # type: ignore[attr-defined]
1171 execute_mouse_hover(element_center[0], element_center[1], page)
1172 elif action["element_role"] and action["element_name"]:
1173 element_role = int(action["element_role"])
1174 element_name = action["element_name"]
1175 nth = action["nth"]
1176 execute_focus(element_role, element_name, nth, page)
1177 elif action["pw_code"]:
1178 parsed_code = parse_playwright_code(action["pw_code"])

Callers 1

stepMethod · 0.85

Calls 15

execute_scrollFunction · 0.85
execute_key_pressFunction · 0.85
execute_mouse_clickFunction · 0.85
execute_mouse_hoverFunction · 0.85
execute_typeFunction · 0.85
execute_focusFunction · 0.85
execute_click_currentFunction · 0.85
parse_playwright_codeFunction · 0.85
execute_playwright_clickFunction · 0.85
execute_playwright_hoverFunction · 0.85
execute_playwright_typeFunction · 0.85

Tested by

no test coverage detected