Spaces:
Running
Running
Action space | |
____________ | |
The action space is a set of primitives that the agent can use to interact with the environment. | |
The primitives are divided into categories based on the type of interaction they perform. | |
Below a list of the primitives supported by BrowserGym: | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| Category | Primitive | Description | | |
+==========+===========================================================+==============================================================================================+ | |
| bid | fill(bid, text) | Fill an input field with text. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | click(bid, button) | Click an element. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | dblclick(bid, button) | Double-click an element. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | hover(bid) | Hover the mouse over an element. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | press(bid, key comb) | Focus an element and press a combination of keys. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | focus(bid) | Focus an element. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | clear(bid) | Clear an input field. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | select_option(bid, options) | Select one or multiple options in a drop-down element. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | drag_and_drop(from bid, to bid) | Drag and drop one element to another. | | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| coord | mouse_move(x, y) | Move the mouse to a location. | | |
| | | then press and hold a mouse button. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | mouse_up(x, y, button) | Move the mouse to a location then release a mouse button. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | mouse_click(x, y, button) | Move the mouse to a location and click a mouse button. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | mouse_dblclick(x, y, button) | Move the mouse to a location and double-click a mouse button. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | mouse_drag_and_drop(from x, from y, to x, to y) | Drag and drop from a location to a location. | | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| keyboard | keyboard_down(key) | Press and holds a keyboard key. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | keyboard_up(key) | Release a keyboard key. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | keyboard_press(key comb) | Press a combination of keys. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | keyboard_type(text) | Types a string of text through the keyboard. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | keyboard_inset_text(text) | Insert a string of text in the currently focused element. | | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| tab | new_tab() | Open a new tab. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | tab_close() | Close the current tab. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | tab_focus(index) | Bring a tab to front (activate tab). | | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| nav | go_back() | Navigate to the previous page in history. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | go_forward() | Navigate to the next page in history. | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | goto(url) | Navigate to a url. | | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| misc | scroll(dx, dy) | | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | send_msg_to_user(text) | | | |
+ +-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| | noop() | Do nothing. | | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
| python | Any python code (UNSAFE!) | Executes code with playwright, the active page and the send msg to user primitive available. | | |
+----------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------+ | |
Example | |
""""""" | |
.. code-block:: python | |
import gymnasium as gym | |
import browsergym.workarena | |
import time | |
env = gym.make( | |
"browsergym/workarena.servicenow.filter-asset-list", | |
headless=False, | |
) | |
try: | |
obs, info = env.reset(seed=10) | |
# Perform the following sequence of actions | |
actions = ["click('a46')", "click('a2157')", "fill('a2164', 'Asset tag')"] | |
for action in actions: | |
obs, reward, terminated, truncated, info = env.step(action) | |
# Sleep for 3 seconds to see the effect of the action | |
time.sleep(3) | |
finally: | |
env.close() | |
For more details please refer to the `WorkArena paper <https://arxiv.org/abs/2403.07718>`_. |