Skip to content

Commit e827b21

Browse files
Den 439 Fix page manager selecting closed page (#82)
1 parent ff1ccf1 commit e827b21

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

dendrite/async_api/_core/_managers/page_manager.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,22 @@ async def get_active_page(self) -> AsyncPage:
4040
async def _page_on_close_handler(self, page: PlaywrightPage):
4141
if self.browser_context and not self.dendrite_browser.closed:
4242
copy_pages = self.pages.copy()
43+
is_active_page = False
4344
for dendrite_page in copy_pages:
4445
if dendrite_page.playwright_page == page:
4546
self.pages.remove(dendrite_page)
47+
if dendrite_page == self.active_page:
48+
is_active_page = True
4649
break
4750

48-
if self.pages:
49-
self.active_page = self.pages[-1]
50-
await self.active_page.playwright_page.bring_to_front()
51-
logger.debug("Switched the active tab to: ", self.active_page.url)
52-
else:
53-
pass
51+
for i in reversed(range(len(self.pages))):
52+
try:
53+
self.active_page = self.pages[i]
54+
await self.pages[i].playwright_page.bring_to_front()
55+
break
56+
except Exception as e:
57+
logger.warning(f"Error switching to the next page: {e}")
58+
continue
5459

5560
async def _page_on_crash_handler(self, page: PlaywrightPage):
5661
logger.error(f"Page crashed: {page.url}")

dendrite/sync_api/_core/_managers/page_manager.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,21 @@ def get_active_page(self) -> Page:
3535
def _page_on_close_handler(self, page: PlaywrightPage):
3636
if self.browser_context and (not self.dendrite_browser.closed):
3737
copy_pages = self.pages.copy()
38+
is_active_page = False
3839
for dendrite_page in copy_pages:
3940
if dendrite_page.playwright_page == page:
4041
self.pages.remove(dendrite_page)
42+
if dendrite_page == self.active_page:
43+
is_active_page = True
4144
break
42-
if self.pages:
43-
self.active_page = self.pages[-1]
44-
self.active_page.playwright_page.bring_to_front()
45-
logger.debug("Switched the active tab to: ", self.active_page.url)
46-
else:
47-
pass
45+
for i in reversed(range(len(self.pages))):
46+
try:
47+
self.active_page = self.pages[i]
48+
self.pages[i].playwright_page.bring_to_front()
49+
break
50+
except Exception as e:
51+
logger.warning(f"Error switching to the next page: {e}")
52+
continue
4853

4954
def _page_on_crash_handler(self, page: PlaywrightPage):
5055
logger.error(f"Page crashed: {page.url}")

0 commit comments

Comments
 (0)