File tree Expand file tree Collapse file tree 7 files changed +33
-4
lines changed Expand file tree Collapse file tree 7 files changed +33
-4
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,19 @@ def test_iframe_basics(self):
17
17
self .switch_to_frame ("iframeResult" ) # Go back inside 1st iframe
18
18
self .highlight ('iframe[title="Iframe Example"]' )
19
19
20
+ def test_iframes_with_context_manager (self ):
21
+ self .open ("https://seleniumbase.io/w3schools/iframes.html" )
22
+ with self .frame_switch ("iframeResult" ):
23
+ self .assert_text ("HTML Iframes" , "h2" )
24
+ with self .frame_switch ('[title*="Iframe"]' ):
25
+ self .assert_text ("This page is displayed in an iframe" , "h1" )
26
+ self .assert_text ("Use CSS width & height to specify" , "p" )
27
+ with self .frame_switch ('[title*="Iframe"]' ):
28
+ self .assert_text ("seleniumbase.io/w3schools/iframes" , "a" )
29
+ self .click ("button#runbtn" )
30
+ with self .frame_switch ("iframeResult" ):
31
+ self .highlight ('iframe[title="Iframe Example"]' )
32
+
20
33
def test_set_content_to_frame (self ):
21
34
self .open ("https://seleniumbase.io/w3schools/iframes.html" )
22
35
self .set_content_to_frame ("iframeResult" )
Original file line number Diff line number Diff line change @@ -209,6 +209,9 @@ self.switch_to_default_content()
209
209
210
210
self .switch_to_parent_frame()
211
211
212
+ with self .frame_switch(frame, timeout = None ):
213
+ # Indented Code Block for Context Manager (Must use "with")
214
+
212
215
self .set_content_to_frame(frame, timeout = None )
213
216
214
217
self .set_content_to_default(nested = False )
Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ keyring==23.6.0
14
14
pkginfo == 1.8.3
15
15
Jinja2 == 3.1.2
16
16
click == 8.1.3
17
- zipp == 3.8.0
17
+ zipp == 3.8.1
18
18
ghp-import == 2.1.0
19
19
readme-renderer == 35.0
20
20
pymdown-extensions == 9.5
Original file line number Diff line number Diff line change @@ -128,7 +128,7 @@ pdfminer.six==20220524;python_version>="3.7"
128
128
129
129
coverage == 5.5 ;python_version < "3.6"
130
130
coverage == 6.2 ;python_version >= "3.6" and python_version<"3.7"
131
- coverage == 6.4.1 ;python_version >= "3.7"
131
+ coverage == 6.4.2 ;python_version >= "3.7"
132
132
pytest-cov == 2.12.1 ;python_version < "3.6"
133
133
pytest-cov == 3.0.0 ;python_version >= "3.6"
134
134
flake8 == 3.7.9 ;python_version < "3.6"
Original file line number Diff line number Diff line change 1
1
# seleniumbase package
2
- __version__ = "3.5.0 "
2
+ __version__ = "3.5.1 "
Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ def test_anything(self):
42
42
import time
43
43
import unittest
44
44
import urllib3
45
+ from contextlib import contextmanager
45
46
from selenium.common.exceptions import (
46
47
ElementClickInterceptedException as ECI_Exception,
47
48
ElementNotInteractableException as ENI_Exception,
@@ -2775,6 +2776,18 @@ def switch_to_parent_frame(self):
2775
2776
return
2776
2777
self.driver.switch_to.parent_frame()
2777
2778
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
+
2778
2791
def set_content_to_frame(self, frame, timeout=None):
2779
2792
"""Replaces the page html with an iframe's html from that page.
2780
2793
If the iframe contains an "src" field that includes a valid URL,
Original file line number Diff line number Diff line change 254
254
"coverage" : [
255
255
'coverage==5.5;python_version<"3.6"' ,
256
256
'coverage==6.2;python_version>="3.6" and python_version<"3.7"' ,
257
- 'coverage==6.4.1 ;python_version>="3.7"' ,
257
+ 'coverage==6.4.2 ;python_version>="3.7"' ,
258
258
'pytest-cov==2.12.1;python_version<"3.6"' ,
259
259
'pytest-cov==3.0.0;python_version>="3.6"' ,
260
260
],
You can’t perform that action at this time.
0 commit comments