mirror of
https://github.com/browser-use/browser-use
synced 2026-05-13 17:56:35 +02:00
104 lines
2.9 KiB
Plaintext
104 lines
2.9 KiB
Plaintext
---
|
|
title: "Output Format"
|
|
description: "Understanding CodeAgent return values and how to access execution history"
|
|
icon: "arrow-right-to-bracket"
|
|
mode: "wide"
|
|
---
|
|
|
|
## NotebookSession
|
|
|
|
The `run()` method returns a `NotebookSession` object containing all executed code cells and their results:
|
|
|
|
```python
|
|
session = await agent.run()
|
|
|
|
# Access basic properties
|
|
session.id # Unique session identifier
|
|
session.cells # List of CodeCell objects
|
|
session.current_execution_count # Total number of executed cells
|
|
session.namespace # Dictionary with all variables from execution
|
|
|
|
# Helper methods
|
|
session.get_cell(cell_id) # Get a specific cell by ID
|
|
session.get_latest_cell() # Get the most recently executed cell
|
|
```
|
|
|
|
## CodeCell Properties
|
|
|
|
Each cell in `session.cells` represents one executed code block:
|
|
|
|
```python
|
|
for cell in session.cells:
|
|
cell.id # Unique cell identifier
|
|
cell.cell_type # 'code' or 'markdown'
|
|
cell.source # The code that was executed
|
|
cell.output # Output from code execution (if any)
|
|
cell.execution_count # Execution order number
|
|
cell.status # 'pending', 'running', 'success', or 'error'
|
|
cell.error # Error message if execution failed
|
|
cell.browser_state # Browser state after execution
|
|
```
|
|
|
|
## Accessing Results
|
|
|
|
### Basic Usage
|
|
|
|
```python
|
|
session = await agent.run()
|
|
|
|
# Iterate through all executed cells
|
|
for cell in session.cells:
|
|
print(f"Cell {cell.execution_count}:")
|
|
print(f" Code: {cell.source}")
|
|
if cell.error:
|
|
print(f" Error: {cell.error}")
|
|
elif cell.output:
|
|
print(f" Output: {cell.output}")
|
|
print(f" Status: {cell.status}")
|
|
|
|
# Get the last cell
|
|
last_cell = session.get_latest_cell()
|
|
if last_cell:
|
|
print(f"Last output: {last_cell.output}")
|
|
|
|
# Access variables from the execution namespace
|
|
products = session.namespace.get('products', [])
|
|
print(f"Extracted {len(products)} products")
|
|
```
|
|
|
|
### Checking Task Completion
|
|
|
|
When the agent calls `done()`, the result is stored in the namespace:
|
|
|
|
```python
|
|
session = await agent.run()
|
|
|
|
# Check if task was completed
|
|
task_done = session.namespace.get('_task_done', False)
|
|
task_result = session.namespace.get('_task_result')
|
|
task_success = session.namespace.get('_task_success')
|
|
|
|
if task_done:
|
|
print(f"Task completed: {task_success}")
|
|
print(f"Result: {task_result}")
|
|
```
|
|
|
|
### Getting All Outputs
|
|
|
|
```python
|
|
session = await agent.run()
|
|
|
|
# Get all outputs (excluding errors)
|
|
outputs = [cell.output for cell in session.cells if cell.output]
|
|
|
|
# Get all errors
|
|
errors = [cell.error for cell in session.cells if cell.error]
|
|
|
|
# Get successful cells only
|
|
successful_cells = [cell for cell in session.cells if cell.status == 'success']
|
|
```
|
|
|
|
## Data Models
|
|
|
|
See the complete data model definitions in the [CodeAgent views source code](https://github.com/browser-use/browser-use/blob/main/browser_use/code_use/views.py).
|