|
| 1 | +# Upgrade guide to v1.0 |
| 2 | + |
| 3 | +The Browserbase v1.0.0 Python SDK has been rewritten from the ground up and ships with a ton of new features and better support that we can't wait for you to try. Unfortunately, however, this means that the old SDKs will be deprecated and archived in favor of the new SDK. |
| 4 | + |
| 5 | +We hope this guide is useful to you; if you have any questions don't hesitate to reach out to [email protected] or [create a new issue ](https://github.com/browserbase/sdk-python/issues/new). |
| 6 | + |
| 7 | +## Create Session |
| 8 | + |
| 9 | +### Old SDK |
| 10 | + |
| 11 | +```python |
| 12 | +from browserbase import Browserbase, CreateSessionOptions |
| 13 | + |
| 14 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 15 | +options = CreateSessionOptions(extensionId='123') |
| 16 | +browserbase.create_session(options) |
| 17 | +``` |
| 18 | + |
| 19 | +Function signature: `def create_session(self, options: Optional[CreateSessionOptions] = None)` |
| 20 | + |
| 21 | +`CreateSessionOptions` is a Pydantic object defined [here](https://github.com/browserbase/python-sdk/blob/0a499ba29853f20bb3055d7c81c5f61c24fcd9ec/browserbase/__init__.py#L52) in the old SDK. |
| 22 | + |
| 23 | +### New SDK |
| 24 | + |
| 25 | +```python |
| 26 | +from browserbase import Browserbase |
| 27 | + |
| 28 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 29 | +session = bb.sessions.create(project_id=BROWSERBASE_PROJECT_ID) |
| 30 | +``` |
| 31 | + |
| 32 | +For more complex session creation, you can import `BrowserSettings` and use Pydantic's `TypeAdapter` to conform JSON spec to the appropriate Pydantic class. You can also import each individual subclass, but this may be rather tedious. |
| 33 | + |
| 34 | +```python |
| 35 | +from browserbase import Browserbase |
| 36 | +from pydantic import TypeAdapter |
| 37 | +from browserbase.types.session_create_params import BrowserSettings |
| 38 | + |
| 39 | +session = bb.sessions.create( |
| 40 | + project_id=BROWSERBASE_PROJECT_ID, |
| 41 | + extension_id="some_extension_id" |
| 42 | + browser_settings=TypeAdapter(BrowserSettings).validate_python( |
| 43 | + {"context": {"id": context_id, "persist": True}} |
| 44 | + ), |
| 45 | + ) |
| 46 | +``` |
| 47 | + |
| 48 | +## Get Connection Url |
| 49 | + |
| 50 | +### Old SDK |
| 51 | + |
| 52 | +```python |
| 53 | +from browserbase import Browserbase |
| 54 | + |
| 55 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 56 | + |
| 57 | +# To create a new session and connect to it |
| 58 | +connect_url = browserbase.get_connect_url() |
| 59 | + |
| 60 | +# To connect to a created session |
| 61 | +connect_url = browserbase.get_connect_url(session_id=some_session.id) |
| 62 | +``` |
| 63 | + |
| 64 | +### New SDK |
| 65 | + |
| 66 | +```python |
| 67 | +from browserbase import Browserbase |
| 68 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 69 | + |
| 70 | +# We must create a session first |
| 71 | +session = bb.sessions.create(project_id=BROWSERBASE_PROJECT_ID) |
| 72 | +connect_url = session.connect_url |
| 73 | +``` |
| 74 | + |
| 75 | +## List Sessions |
| 76 | + |
| 77 | +### Old SDK |
| 78 | + |
| 79 | +```python |
| 80 | +from browserbase import Browserbase |
| 81 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 82 | +sessions = browserbase.list_sessions() |
| 83 | +``` |
| 84 | + |
| 85 | +### New SDK |
| 86 | + |
| 87 | +```python |
| 88 | +from browserbase import Browserbase |
| 89 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 90 | +sessions = bb.sessions.list() |
| 91 | +``` |
| 92 | + |
| 93 | +## Complete Session |
| 94 | + |
| 95 | +### Old SDK |
| 96 | + |
| 97 | +```python |
| 98 | +from browserbase import Browserbase |
| 99 | + |
| 100 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 101 | +browserbase.complete_session(session_id=some_session.id) |
| 102 | +``` |
| 103 | + |
| 104 | +### New SDK |
| 105 | + |
| 106 | +```python |
| 107 | +from browserbase import Browserbase |
| 108 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 109 | +bb.sessions.update(id=some_session.id, status="REQUEST_RELEASE") |
| 110 | +``` |
| 111 | + |
| 112 | +## Get Session |
| 113 | + |
| 114 | +### Old SDK |
| 115 | + |
| 116 | +```python |
| 117 | +from browserbase import Browserbase |
| 118 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 119 | +session = browserbase.get_session(session_id=some_session.id) |
| 120 | +``` |
| 121 | + |
| 122 | +### New SDK |
| 123 | + |
| 124 | +```python |
| 125 | +from browserbase import Browserbase |
| 126 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 127 | +session = bb.sessions.retrieve(id=some_session.id) |
| 128 | +``` |
| 129 | + |
| 130 | +## Get Session Recording |
| 131 | + |
| 132 | +### Old SDK |
| 133 | + |
| 134 | +```python |
| 135 | +from browserbase import Browserbase |
| 136 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 137 | +recording = browserbase.get_session_recording(session_id=some_session.id) |
| 138 | +``` |
| 139 | + |
| 140 | +### New SDK |
| 141 | + |
| 142 | +```python |
| 143 | +from browserbase import Browserbase |
| 144 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 145 | +recording = bb.sessions.recording.retrieve(id=some_session.id) |
| 146 | +``` |
| 147 | + |
| 148 | +## Get Session Downloads |
| 149 | + |
| 150 | +### Old SDK |
| 151 | + |
| 152 | +> [!NOTE] |
| 153 | +> The parameter `retry_interval` is no longer supported. You can configure retries with the following syntax on bb init: |
| 154 | +> |
| 155 | +> `bb = Browserbase(api_key=BROWSERBASE_API_KEY, max_retries=5)` |
| 156 | +
|
| 157 | +```python |
| 158 | +from browserbase import Browserbase |
| 159 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 160 | +downloads = browserbase.get_session_downloads(session_id=some_session.id) |
| 161 | +``` |
| 162 | + |
| 163 | +### New SDK |
| 164 | + |
| 165 | +```python |
| 166 | +from browserbase import Browserbase |
| 167 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 168 | +downloads = bb.sessions.downloads.list(id=some_session.id) |
| 169 | +``` |
| 170 | + |
| 171 | +## Get Debug Connection URLs |
| 172 | + |
| 173 | +### Old SDK |
| 174 | + |
| 175 | +```python |
| 176 | +from browserbase import Browserbase |
| 177 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 178 | +debug_urls = browserbase.get_debug_connection_urls(session_id=some_session.id) |
| 179 | +``` |
| 180 | + |
| 181 | +### New SDK |
| 182 | + |
| 183 | +```python |
| 184 | +from browserbase import Browserbase |
| 185 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 186 | +debug_urls = bb.sessions.debug(id=some_session.id) |
| 187 | +``` |
| 188 | + |
| 189 | +## Get Session Logs |
| 190 | + |
| 191 | +### Old SDK |
| 192 | + |
| 193 | +```python |
| 194 | +from browserbase import Browserbase |
| 195 | +browserbase = Browserbase(api_key=BROWSERBASE_API_KEY, project_id=BROWSERBASE_PROJECT_ID) |
| 196 | +logs = browserbase.get_session_logs(session_id=some_session.id) |
| 197 | +``` |
| 198 | + |
| 199 | +### New SDK |
| 200 | + |
| 201 | +```python |
| 202 | +from browserbase import Browserbase |
| 203 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 204 | +logs = bb.sessions.logs.list(id=some_session.id) |
| 205 | +``` |
| 206 | + |
| 207 | +# Deprecated Methods |
| 208 | + |
| 209 | +`load`, `load_url`, and `screenshot` are fully deprecated. You can use the following example instead that encapsulates the same functionality using Playwright |
| 210 | + |
| 211 | +```python |
| 212 | +from playwright.sync_api import Playwright, sync_playwright |
| 213 | +from browserbase import Browserbase |
| 214 | + |
| 215 | +bb = Browserbase(api_key=BROWSERBASE_API_KEY) |
| 216 | + |
| 217 | +def run(playwright: Playwright) -> None: |
| 218 | + # Create a session on Browserbase |
| 219 | + session = bb.sessions.create(project_id=BROWSERBASE_PROJECT_ID) |
| 220 | + |
| 221 | + # Connect to the remote session |
| 222 | + chromium = playwright.chromium |
| 223 | + browser = chromium.connect_over_cdp(session.connect_url) |
| 224 | + context = browser.contexts[0] |
| 225 | + page = context.pages[0] |
| 226 | + |
| 227 | + # Execute Playwright actions on the remote browser tab |
| 228 | + page.goto("https://news.ycombinator.com/") |
| 229 | + page_title = page.title() |
| 230 | + assert ( |
| 231 | + page_title == "Hacker News" |
| 232 | + ), f"Page title is not 'Hacker News', it is '{page_title}'" |
| 233 | + page.screenshot(path="screenshot.png") |
| 234 | + |
| 235 | + page.close() |
| 236 | + browser.close() |
| 237 | + print("Done!") |
| 238 | + |
| 239 | + |
| 240 | +if __name__ == "__main__": |
| 241 | + with sync_playwright() as playwright: |
| 242 | + run(playwright) |
| 243 | +``` |
0 commit comments