Skip to content

Commit 344e788

Browse files
committed
docs: update scrapybara migration guide with computer controls
Co-authored-by: null <>
1 parent 4b99cea commit 344e788

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

migrations/scrapybara.mdx

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ title: "Scrapybara"
1515
| **Stealth Mode** | ❌ Not available | Create browser with `stealth: true` |
1616
| **Replays** | ❌ Not available | `client.browsers.replays.start()` and `client.browsers.replays.stop()` |
1717
| **Save Auth** | `instance.browser.save_auth(name="default")` | Create [Profile](/browsers/profiles). Then create browser with `kernel.browsers.create(profile={"name": "profile1", "save_changes": True})` |
18+
| **Click** | `instance.browser.computer.click_mouse(x=100, y=200)` | `client.browsers.computer.click_mouse(id=session_id, x=100, y=200)` |
19+
| **Drag** | `instance.browser.computer.drag_mouse(path=[(100,100), (200,200)])` | `client.browsers.computer.drag_mouse(id=session_id, from_x=100, from_y=100, to_x=200, to_y=200)` |
20+
| **Screenshot** | `instance.screenshot()` or `instance.browser.computer.take_screenshot()` | `client.browsers.computer.capture_screenshot(id=session_id)` |
1821

1922
## How to migrate
2023

@@ -138,6 +141,68 @@ browser2 = await client.browsers.create(
138141
)
139142
```
140143

144+
### Computer Controls
145+
146+
Both Scrapybara and Kernel provide Computer Controls APIs that allow you to programmatically control the browser environment at the system level - including mouse movements, clicks, keyboard input, and screenshots. Kernel has expanded on this functionality with a comprehensive set of computer control methods.
147+
148+
**Scrapybara**
149+
```python
150+
instance = client.start_browser()
151+
152+
# Click at specific coordinates
153+
instance.browser.computer.click_mouse(x=100, y=200)
154+
155+
# Drag from one position to another
156+
instance.browser.computer.drag_mouse(
157+
path=[(100, 100), (200, 200)]
158+
)
159+
160+
# Type text
161+
instance.browser.computer.type_text(text="Hello World")
162+
163+
# Take a screenshot
164+
screenshot = instance.browser.computer.take_screenshot()
165+
```
166+
167+
**Kernel**
168+
```python
169+
browser = await client.browsers.create()
170+
171+
# Click at specific coordinates with additional options
172+
client.browsers.computer.click_mouse(
173+
id=browser.session_id,
174+
x=100,
175+
y=200,
176+
button="left",
177+
click_type="click",
178+
num_clicks=1
179+
)
180+
181+
# Drag from one position to another
182+
client.browsers.computer.drag_mouse(
183+
id=browser.session_id,
184+
from_x=100,
185+
from_y=100,
186+
to_x=200,
187+
to_y=200
188+
)
189+
190+
# Type text with optional delay
191+
client.browsers.computer.type_text(
192+
id=browser.session_id,
193+
text="Hello World",
194+
delay=100
195+
)
196+
197+
# Take a screenshot (full screen or specific region)
198+
screenshot = client.browsers.computer.capture_screenshot(
199+
id=browser.session_id,
200+
region={"x": 0, "y": 0, "width": 800, "height": 600}
201+
)
202+
```
203+
204+
For a complete reference of all available Computer Controls methods in Kernel, see the [Computer Controls documentation](/browsers/computer-controls).
205+
141206

142207
## Full API Comparison
143208

@@ -161,6 +226,14 @@ browser2 = await client.browsers.create(
161226
| **File Download** | Via browser, then `instance.file()` | `client.browsers.fs.read_file()` |
162227
| **Process Control** | `instance.bash()` | `client.browsers.process.*` |
163228
| **Proxy Support** | ❌ Not available | Create [Proxy](/proxies/overview#1-create-a-proxy). Then create browser with `client.browsers.create(proxy_id=proxy.id)` |
229+
| **Click Mouse** | `instance.browser.computer.click_mouse(x=100, y=200)` | `client.browsers.computer.click_mouse(id=session_id, x=100, y=200)` |
230+
| **Move Mouse** | `instance.browser.computer.move_mouse(x=100, y=200)` | `client.browsers.computer.move_mouse(id=session_id, x=100, y=200)` |
231+
| **Drag Mouse** | `instance.browser.computer.drag_mouse(path=[(100,100), (200,200)])` | `client.browsers.computer.drag_mouse(id=session_id, from_x=100, from_y=100, to_x=200, to_y=200)` |
232+
| **Scroll** | `instance.browser.computer.scroll(delta_x=0, delta_y=100)` | `client.browsers.computer.scroll(id=session_id, delta_x=0, delta_y=100)` |
233+
| **Type Text** | `instance.browser.computer.type_text(text="Hello")` | `client.browsers.computer.type_text(id=session_id, text="Hello")` |
234+
| **Press Key** | `instance.browser.computer.press_key(keys=["Ctrl", "t"])` | `client.browsers.computer.press_key(id=session_id, keys=["Ctrl+t"])` |
235+
| **Take Screenshot** | `instance.browser.computer.take_screenshot()` | `client.browsers.computer.capture_screenshot(id=session_id)` |
236+
| **Get Cursor Position** | `instance.browser.computer.get_cursor_position()` | Use `move_mouse` with tracking or CDP |
164237

165238
---
166239

0 commit comments

Comments
 (0)