> ## Documentation Index
> Fetch the complete documentation index at: https://docs.camel-ai.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Camel.toolkits.non visual browser toolkit.browser non visual toolkit

<a id="camel.toolkits.non_visual_browser_toolkit.browser_non_visual_toolkit" />

<a id="camel.toolkits.non_visual_browser_toolkit.browser_non_visual_toolkit.BrowserNonVisualToolkit" />

## BrowserNonVisualToolkit

```python theme={"system"}
class BrowserNonVisualToolkit(BaseToolkit):
```

A lightweight, *non-visual* browser toolkit exposing primitive
Playwright actions as CAMEL `FunctionTool`s.

<a id="camel.toolkits.non_visual_browser_toolkit.browser_non_visual_toolkit.BrowserNonVisualToolkit.__init__" />

### **init**

```python theme={"system"}
def __init__(self):
```

<a id="camel.toolkits.non_visual_browser_toolkit.browser_non_visual_toolkit.BrowserNonVisualToolkit.__del__" />

### **del**

```python theme={"system"}
def __del__(self):
```

Best-effort cleanup when toolkit is garbage collected.

1. We *avoid* running during the Python interpreter shutdown phase
   (`sys.is_finalizing()`), because the import machinery and/or event
   loop may already be torn down which leads to noisy exceptions such
   as `ImportError: sys.meta_path is None` or
   `RuntimeError: Event loop is closed`.
2. We protect all imports and event-loop operations with defensive
   `try/except` blocks.  This ensures that, even if cleanup cannot be
   carried out, we silently ignore the failure instead of polluting
   stderr on program exit.

<a id="camel.toolkits.non_visual_browser_toolkit.browser_non_visual_toolkit.BrowserNonVisualToolkit._validate_ref" />

### \_validate\_ref

```python theme={"system"}
def _validate_ref(self, ref: str, method_name: str):
```

Validate that ref parameter is a non-empty string.

<a id="camel.toolkits.non_visual_browser_toolkit.browser_non_visual_toolkit.BrowserNonVisualToolkit._ensure_agent" />

### \_ensure\_agent

```python theme={"system"}
def _ensure_agent(self):
```

Create PlaywrightLLMAgent on first use if `web_agent_model`
provided.

<a id="camel.toolkits.non_visual_browser_toolkit.browser_non_visual_toolkit.BrowserNonVisualToolkit.get_tools" />

### get\_tools

```python theme={"system"}
def get_tools(self):
```
