Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions templates/python/advanced-sample/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,8 @@ async def test_captcha_solver(ctx: kernel.KernelContext) -> None:
browser = await playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url)

# Get or create context and page
contexts = browser.contexts
context = contexts[0] if contexts else await browser.new_context()
pages = context.pages
page = pages[0] if pages else await context.new_page()
context = browser.contexts[0] if browser.contexts else await browser.new_context()
page = context.pages[0] if context.pages else await context.new_page()

# Access the live view. Retrieve this live_view_url from the Kernel logs in your CLI:
# export KERNEL_API_KEY=<Your API key>
Expand Down
4 changes: 2 additions & 2 deletions templates/python/computer-use/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ async def cu_task(
try:
async with async_playwright() as playwright:
browser = await playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url)
context_obj = browser.contexts[0]
page = context_obj.pages[0]
context = browser.contexts[0] if browser.contexts else await browser.new_context()
page = context.pages[0] if context.pages else await context.new_page()

# Run the sampling loop
final_messages = await sampling_loop(
Expand Down
9 changes: 1 addition & 8 deletions templates/python/cua/computers/default/kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,7 @@ def get_dimensions(self):
def _get_browser_and_page(self) -> tuple[Browser, Page]:
# Connect to the remote browser using the CDP URL
browser = self._playwright.chromium.connect_over_cdp(self.cdp_ws_url)
# Use the first context or create one if none exists
if browser.contexts:
context = browser.contexts[0]
else:
context = browser.new_context()
# Add event listeners for page creation and closure
context.on("page", self._handle_new_page)
# Create a new page and set viewport
context = browser.contexts[0] if browser.contexts else browser.new_context()
page = context.pages[0] if context.pages else context.new_page()
page.set_viewport_size({"width": self.width, "height": self.height})
page.on("close", self._handle_page_close)
Expand Down
5 changes: 3 additions & 2 deletions templates/python/cua/computers/default/local_playwright.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,13 @@ def _get_browser_and_page(self) -> tuple[Browser, Page]:
env={"DISPLAY": ":0"},
)

context = browser.new_context()
context = browser.contexts[0] if browser.contexts else browser.new_context()


# Add event listeners for page creation and closure
context.on("page", self._handle_new_page)

page = context.new_page()
page = context.pages[0] if context.pages else context.new_page()
page.set_viewport_size({"width": width, "height": height})
page.on("close", self._handle_page_close)

Expand Down
2 changes: 1 addition & 1 deletion templates/python/cua/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ dependencies = [
"kernel>=0.6.0",
"playwright==1.52.0",
"pydantic==2.11.7",
"pydantic_core==2.35.1",
"pydantic_core==2.33.2",
"pyee==13.0.0",
"python-dotenv==1.1.0",
"requests==2.32.4",
Expand Down