> ## 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.hybrid browser toolkit py.hybrid browser toolkit

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit" />

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit" />

## HybridBrowserToolkit

```python theme={"system"}
class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
```

A hybrid browser toolkit that combines non-visual, DOM-based browser
automation with visual, screenshot-based capabilities.

This toolkit exposes a set of actions as CAMEL FunctionTools for agents
to interact with web pages. It can operate in headless mode and supports
both programmatic control of browser actions (like clicking and typing)
and visual analysis of the page layout through screenshots with marked
interactive elements.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.__init__" />

### **init**

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

Initialize the HybridBrowserToolkit.

**Parameters:**

* **headless** (bool): Whether to run the browser in headless mode. Defaults to `True`.
* **user\_data\_dir** (Optional\[str]): Path to a directory for storing browser data like cookies and local storage. Useful for maintaining sessions across runs. Defaults to `None` (a temporary directory is used).
* **stealth** (bool): Whether to run the browser in stealth mode to avoid bot detection. When enabled, hides WebDriver characteristics, spoofs navigator properties, and implements various anti-detection measures. Highly recommended for production use and when accessing sites with bot detection. Defaults to `False`.
* **web\_agent\_model** (Optional\[BaseModelBackend]): The language model backend to use for the high-level `solve_task` agent. This is required only if you plan to use `solve_task`. Defaults to `None`.
* **cache\_dir** (str): The directory to store cached files, such as screenshots. Defaults to `"tmp/"`.
* **enabled\_tools** (Optional\[List\[str]]): List of tool names to enable. If None, uses DEFAULT\_TOOLS. Available tools: browser\_open, browser\_close, browser\_visit\_page, browser\_back, browser\_forward, browser\_get\_page\_snapshot, browser\_get\_som\_screenshot, browser\_get\_page\_links, browser\_click, browser\_type, browser\_select, browser\_scroll, browser\_enter, browser\_wait\_user, browser\_solve\_task. Defaults to `None`.
* **browser\_log\_to\_file** (bool): Whether to save detailed browser action logs to file. When enabled, logs action inputs/outputs, execution times, and page loading times. Logs are saved to an auto-generated timestamped file. Defaults to `False`.
* **log\_dir** (Optional\[str]): Custom directory path for log files. If None, defaults to "browser\_log". Defaults to `None`.
* **session\_id** (Optional\[str]): A unique identifier for this browser session. When multiple HybridBrowserToolkit instances are used concurrently, different session IDs prevent them from sharing the same browser session and causing conflicts. If None, a default session will be used. Defaults to `None`.
* **default\_start\_url** (str): The default URL to navigate to when open\_browser() is called without a start\_url parameter or with None. Defaults to `"https://google.com/"`.
* **default\_timeout** (Optional\[int]): Default timeout in milliseconds for browser actions. If None, uses environment variable HYBRID\_BROWSER\_DEFAULT\_TIMEOUT or defaults to 3000ms. Defaults to `None`.
* **short\_timeout** (Optional\[int]): Short timeout in milliseconds for quick browser actions. If None, uses environment variable HYBRID\_BROWSER\_SHORT\_TIMEOUT or defaults to 1000ms. Defaults to `None`.
* **navigation\_timeout** (Optional\[int]): Custom navigation timeout in milliseconds. If None, uses environment variable HYBRID\_BROWSER\_NAVIGATION\_TIMEOUT or defaults to 10000ms. Defaults to `None`.
* **network\_idle\_timeout** (Optional\[int]): Custom network idle timeout in milliseconds. If None, uses environment variable HYBRID\_BROWSER\_NETWORK\_IDLE\_TIMEOUT or defaults to 5000ms. Defaults to `None`.
* **screenshot\_timeout** (Optional\[int]): Custom screenshot timeout in milliseconds. If None, uses environment variable HYBRID\_BROWSER\_SCREENSHOT\_TIMEOUT or defaults to 15000ms. Defaults to `None`.
* **page\_stability\_timeout** (Optional\[int]): Custom page stability timeout in milliseconds. If None, uses environment variable HYBRID\_BROWSER\_PAGE\_STABILITY\_TIMEOUT or defaults to 1500ms. Defaults to `None`.
* **dom\_content\_loaded\_timeout** (Optional\[int]): Custom DOM content loaded timeout in milliseconds. If None, uses environment variable HYBRID\_BROWSER\_DOM\_CONTENT\_LOADED\_TIMEOUT or defaults to 5000ms. Defaults to `None`.
* **viewport\_limit** (bool): When True, only return snapshot results visible in the current viewport. When False, return all elements on the page regardless of visibility. Defaults to `False`.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.web_agent_model" />

### web\_agent\_model

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

Get the web agent model.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.web_agent_model" />

### web\_agent\_model

```python theme={"system"}
def web_agent_model(self, value: Optional[BaseModelBackend]):
```

Set the web agent model.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.cache_dir" />

### cache\_dir

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

Get the cache directory.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.__del__" />

### **del**

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

Cleanup browser resources on garbage collection.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit._load_unified_analyzer" />

### \_load\_unified\_analyzer

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

Load the unified analyzer JavaScript script.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit._validate_ref" />

### \_validate\_ref

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

Validate ref parameter.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit._truncate_if_needed" />

### \_truncate\_if\_needed

```python theme={"system"}
def _truncate_if_needed(self, content: Any):
```

Truncate content if max\_log\_length is set.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.action_logger" />

### action\_logger

```python theme={"system"}
def action_logger(func: Callable[..., Any]):
```

Decorator to add logging to action methods.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit._convert_analysis_to_rects" />

### \_convert\_analysis\_to\_rects

```python theme={"system"}
def _convert_analysis_to_rects(self, analysis_data: Dict[str, Any]):
```

Convert analysis data to rect format for visual marking.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit._add_set_of_mark" />

### \_add\_set\_of\_mark

```python theme={"system"}
def _add_set_of_mark(self, image, rects):
```

Add visual marks to the image.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit._format_snapshot_from_analysis" />

### \_format\_snapshot\_from\_analysis

```python theme={"system"}
def _format_snapshot_from_analysis(self, analysis_data: Dict[str, Any]):
```

Format analysis data into snapshot string.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit._ensure_agent" />

### \_ensure\_agent

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

Create PlaywrightLLMAgent on first use.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.get_log_summary" />

### get\_log\_summary

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

Get a summary of logged actions.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.clear_logs" />

### clear\_logs

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

Clear the log buffer.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.clone_for_new_session" />

### clone\_for\_new\_session

```python theme={"system"}
def clone_for_new_session(self, new_session_id: Optional[str] = None):
```

Create a new instance of HybridBrowserToolkit with a unique
session.

**Parameters:**

* **new\_session\_id**: Optional new session ID. If None, a UUID will be generated.

**Returns:**

A new HybridBrowserToolkit instance with the same configuration
but a different session.

<a id="camel.toolkits.hybrid_browser_toolkit_py.hybrid_browser_toolkit.HybridBrowserToolkit.get_tools" />

### get\_tools

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

Get available function tools
based on enabled\_tools configuration.
