commit 3a5c9591a5d4ce190554cb2f3f0b4fc5eb0c7dc1 parent db4bd61e291e44e99e55c7727568535b97503a21 Author: elkal98 <khalid.alhaddad98@gmail.com> Date: Wed, 22 Oct 2025 11:32:15 +0000 Bug 1806904 - Add dedicated "switch_to_parent_frame" method to the WebDriver Python client, r=webdriver-reviewers,whimboo Differential Revision: https://phabricator.services.mozilla.com/D268595 Diffstat:
24 files changed, 29 insertions(+), 32 deletions(-)
diff --git a/testing/web-platform/tests/tools/webdriver/webdriver/client.py b/testing/web-platform/tests/tools/webdriver/webdriver/client.py @@ -599,14 +599,11 @@ class Session: return self.send_session_command("POST", "window", body=body) def switch_frame(self, frame): - if frame == "parent": - url = "frame/parent" - body = None - else: - url = "frame" - body = {"id": frame} + body = {"id": frame} + return self.send_session_command("POST", "frame", body=body) - return self.send_session_command("POST", url, body) + def switch_to_parent_frame(self): + return self.send_session_command("POST", "frame/parent") @property def handles(self): diff --git a/testing/web-platform/tests/webdriver/tests/classic/element_clear/clear.py b/testing/web-platform/tests/webdriver/tests/classic/element_clear/clear.py @@ -99,7 +99,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/element_click/click.py b/testing/web-platform/tests/webdriver/tests/classic/element_click/click.py @@ -82,7 +82,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("input#text", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/element_click/navigate.py b/testing/web-platform/tests/webdriver/tests/classic/element_click/navigate.py @@ -146,7 +146,7 @@ def test_link_from_nested_context_with_target(session, inline, iframe, target): # not timeout. Switch to the target context, and wait until the expected # element is available. if target == "_parent": - session.switch_frame("parent") + session.switch_to_parent_frame() elif target == "_top": session.switch_frame(None) diff --git a/testing/web-platform/tests/webdriver/tests/classic/element_send_keys/send_keys.py b/testing/web-platform/tests/webdriver/tests/classic/element_send_keys/send_keys.py @@ -95,7 +95,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("input#text", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/execute_async_script/arguments.py b/testing/web-platform/tests/webdriver/tests/classic/execute_async_script/arguments.py @@ -93,7 +93,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) @@ -143,7 +143,7 @@ def test_no_such_shadow_root_from_other_frame(session, get_test_page, closed): element = session.find.css("custom-element", all=False) shadow_root = element.shadow_root - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/execute_script/arguments.py b/testing/web-platform/tests/webdriver/tests/classic/execute_script/arguments.py @@ -81,7 +81,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) @@ -125,7 +125,7 @@ def test_no_such_shadow_root_from_other_frame(session, get_test_page, closed): element = session.find.css("custom-element", all=False) shadow_root = element.shadow_root - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: execute_script(session, "arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/find_element_from_element/find.py b/testing/web-platform/tests/webdriver/tests/classic/find_element_from_element/find.py @@ -71,7 +71,7 @@ def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline session.switch_frame(0) from_element = session.find.css("#parent", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() response = find_element(session, from_element.id, "css selector", "p") assert_error(response, "no such element") diff --git a/testing/web-platform/tests/webdriver/tests/classic/find_element_from_shadow_root/find.py b/testing/web-platform/tests/webdriver/tests/classic/find_element_from_shadow_root/find.py @@ -75,7 +75,7 @@ def test_no_such_shadow_root_with_shadow_root_from_other_frame( host = session.find.css("custom-element", all=False) shadow_root = host.shadow_root - session.switch_frame("parent") + session.switch_to_parent_frame() response = find_element(session, shadow_root.id, "css selector", "div") assert_error(response, "no such shadow root") diff --git a/testing/web-platform/tests/webdriver/tests/classic/find_elements_from_element/find.py b/testing/web-platform/tests/webdriver/tests/classic/find_elements_from_element/find.py @@ -72,7 +72,7 @@ def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline session.switch_frame(0) from_element = session.find.css("#parent", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() response = find_elements(session, from_element.id, "css selector", "p") assert_error(response, "no such element") diff --git a/testing/web-platform/tests/webdriver/tests/classic/find_elements_from_shadow_root/find.py b/testing/web-platform/tests/webdriver/tests/classic/find_elements_from_shadow_root/find.py @@ -75,7 +75,7 @@ def test_no_such_shadow_root_with_shadow_root_from_other_frame( host = session.find.css("custom-element", all=False) shadow_root = host.shadow_root - session.switch_frame("parent") + session.switch_to_parent_frame() response = find_elements(session, shadow_root.id, "css selector", "div") assert_error(response, "no such shadow root") diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_computed_label/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_computed_label/get.py @@ -58,7 +58,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_computed_role/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_computed_role/get.py @@ -58,7 +58,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_element_attribute/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_element_attribute/get.py @@ -70,7 +70,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_element_css_value/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_element_css_value/get.py @@ -74,7 +74,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_element_property/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_element_property/get.py @@ -71,7 +71,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_element_rect/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_element_rect/get.py @@ -74,7 +74,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_element_shadow_root/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_element_shadow_root/get.py @@ -61,7 +61,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_element_tag_name/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_element_tag_name/get.py @@ -70,7 +70,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/get_element_text/get.py b/testing/web-platform/tests/webdriver/tests/classic/get_element_text/get.py @@ -70,7 +70,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/is_element_enabled/enabled.py b/testing/web-platform/tests/webdriver/tests/classic/is_element_enabled/enabled.py @@ -65,7 +65,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("input#text", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/is_element_selected/selected.py b/testing/web-platform/tests/webdriver/tests/classic/is_element_selected/selected.py @@ -89,7 +89,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("input#text", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/classic/take_element_screenshot/screenshot.py b/testing/web-platform/tests/webdriver/tests/classic/take_element_screenshot/screenshot.py @@ -63,7 +63,7 @@ def test_no_such_element_from_other_frame(session, get_test_page, closed): element = session.find.css("div", all=False) - session.switch_frame("parent") + session.switch_to_parent_frame() if closed: session.execute_script("arguments[0].remove();", args=[frame]) diff --git a/testing/web-platform/tests/webdriver/tests/interop/frames.py b/testing/web-platform/tests/webdriver/tests/interop/frames.py @@ -30,4 +30,4 @@ async def test_classic_switch_to_parent_no_browsing_context(bidi_session, curren await wait.until(is_frame_removed) with pytest.raises(NoSuchWindowException): - current_session.switch_frame("parent") + current_session.switch_to_parent_frame()