Skip to content

Commit 1512f82

Browse files
committed
Add Context Manager frame_switch(frame). ("with" required)
1 parent 1cba7db commit 1512f82

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

help_docs/method_summary.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@ self.switch_to_default_content()
209209

210210
self.switch_to_parent_frame()
211211

212+
with self.frame_switch(frame, timeout=None):
213+
# Indented Code Block for Context Manager (Must use "with")
214+
212215
self.set_content_to_frame(frame, timeout=None)
213216

214217
self.set_content_to_default(nested=False)

seleniumbase/fixtures/base_case.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def test_anything(self):
4242
import time
4343
import unittest
4444
import urllib3
45+
from contextlib import contextmanager
4546
from selenium.common.exceptions import (
4647
ElementClickInterceptedException as ECI_Exception,
4748
ElementNotInteractableException as ENI_Exception,
@@ -2775,6 +2776,18 @@ def switch_to_parent_frame(self):
27752776
return
27762777
self.driver.switch_to.parent_frame()
27772778

2779+
@contextmanager
2780+
def frame_switch(self, frame, timeout=None):
2781+
""" Context Manager for switching into iframes.
2782+
Usage example:
2783+
with self.frame_switch("iframe"):
2784+
# Perform actions here that should be done within the iframe.
2785+
# The iframe is automatically exited after the "with" block ends.
2786+
"""
2787+
self.switch_to_frame(frame, timeout=timeout)
2788+
yield
2789+
self.switch_to_parent_frame()
2790+
27782791
def set_content_to_frame(self, frame, timeout=None):
27792792
"""Replaces the page html with an iframe's html from that page.
27802793
If the iframe contains an "src" field that includes a valid URL,

0 commit comments

Comments
 (0)