Skip to content

Commit f6c01e7

Browse files
Den 435 Broader-fix-to-disappearing-frame-issue (#78)
1 parent 95cc3f1 commit f6c01e7

File tree

2 files changed

+33
-33
lines changed

2 files changed

+33
-33
lines changed

dendrite/async_api/_core/_utils.py

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from typing import Union, List, TYPE_CHECKING
2-
from playwright.async_api import FrameLocator, ElementHandle
2+
from playwright.async_api import FrameLocator, ElementHandle, Error
33
from bs4 import BeautifulSoup
44
from loguru import logger
55

@@ -42,29 +42,29 @@ async def expand_iframes(
4242

4343
try:
4444
content_frame = await iframe.content_frame()
45-
except Exception as e:
46-
logger.debug(f"Error getting content frame for iframe {iframe_id}: {e}")
47-
continue
4845

49-
if content_frame is None:
46+
if content_frame is None:
47+
continue
48+
49+
await content_frame.evaluate(
50+
GENERATE_DENDRITE_IDS_IFRAME_SCRIPT, {"frame_path": new_iframe_path}
51+
)
52+
53+
frame_content = await content_frame.content()
54+
55+
frame_tree = BeautifulSoup(frame_content, "html.parser")
56+
mild_strip_in_place(frame_tree)
57+
merge_iframe_to_page(iframe_id, page_soup, frame_tree)
58+
await expand_iframes(
59+
page,
60+
page_soup,
61+
new_iframe_path,
62+
iframe,
63+
)
64+
except Error as e:
65+
logger.debug(f"Error getting content frame for iframe {iframe_id}: {e}")
5066
continue
5167

52-
await content_frame.evaluate(
53-
GENERATE_DENDRITE_IDS_IFRAME_SCRIPT, {"frame_path": new_iframe_path}
54-
)
55-
56-
frame_content = await content_frame.content()
57-
58-
frame_tree = BeautifulSoup(frame_content, "html.parser")
59-
mild_strip_in_place(frame_tree)
60-
merge_iframe_to_page(iframe_id, page_soup, frame_tree)
61-
await expand_iframes(
62-
page,
63-
page_soup,
64-
new_iframe_path,
65-
iframe,
66-
)
67-
6868

6969
def merge_iframe_to_page(
7070
iframe_id: str,

dendrite/sync_api/_core/_utils.py

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from typing import Union, List, TYPE_CHECKING
2-
from playwright.sync_api import FrameLocator, ElementHandle
2+
from playwright.sync_api import FrameLocator, ElementHandle, Error
33
from bs4 import BeautifulSoup
44
from loguru import logger
55
from dendrite.sync_api._core._type_spec import PlaywrightPage
@@ -34,19 +34,19 @@ def expand_iframes(
3434
new_iframe_path = f"{new_iframe_path}{iframe_id}"
3535
try:
3636
content_frame = iframe.content_frame()
37-
except Exception as e:
37+
if content_frame is None:
38+
continue
39+
content_frame.evaluate(
40+
GENERATE_DENDRITE_IDS_IFRAME_SCRIPT, {"frame_path": new_iframe_path}
41+
)
42+
frame_content = content_frame.content()
43+
frame_tree = BeautifulSoup(frame_content, "html.parser")
44+
mild_strip_in_place(frame_tree)
45+
merge_iframe_to_page(iframe_id, page_soup, frame_tree)
46+
expand_iframes(page, page_soup, new_iframe_path, iframe)
47+
except Error as e:
3848
logger.debug(f"Error getting content frame for iframe {iframe_id}: {e}")
3949
continue
40-
if content_frame is None:
41-
continue
42-
content_frame.evaluate(
43-
GENERATE_DENDRITE_IDS_IFRAME_SCRIPT, {"frame_path": new_iframe_path}
44-
)
45-
frame_content = content_frame.content()
46-
frame_tree = BeautifulSoup(frame_content, "html.parser")
47-
mild_strip_in_place(frame_tree)
48-
merge_iframe_to_page(iframe_id, page_soup, frame_tree)
49-
expand_iframes(page, page_soup, new_iframe_path, iframe)
5050

5151

5252
def merge_iframe_to_page(iframe_id: str, page: BeautifulSoup, iframe: BeautifulSoup):

0 commit comments

Comments
 (0)