blob: 9c6db8d2cd61d6e92f45ac1843dbe0f43f69af76 [file] [log] [blame]
import pytest
from webdriver import NoSuchElementException
from tests.support.asserts import assert_error, assert_success
def switch_to_parent_frame(session):
return session.transport.send(
"POST", "session/{session_id}/frame/parent".format(**vars(session)))
def test_null_response_value(session, inline, iframe):
session.url = inline(iframe("<p>foo"))
frame_element = session.find.css("iframe", all=False)
session.switch_frame(frame_element)
response = switch_to_parent_frame(session)
value = assert_success(response)
assert value is None
def test_no_top_browsing_context(session, url):
session.window_handle = session.new_window()
session.url = url("/webdriver/tests/support/html/frames.html")
subframe = session.find.css("#sub-frame", all=False)
session.switch_frame(subframe)
session.window.close()
response = switch_to_parent_frame(session)
assert_error(response, "no such window")
def test_no_parent_browsing_context(session, url):
session.url = url("/webdriver/tests/support/html/frames.html")
subframe = session.find.css("#sub-frame", all=False)
session.switch_frame(subframe)
deleteframe = session.find.css("#delete-frame", all=False)
session.switch_frame(deleteframe)
button = session.find.css("#remove-top", all=False)
button.click()
response = switch_to_parent_frame(session)
assert_error(response, "no such window")
def test_no_browsing_context(session, closed_frame):
response = switch_to_parent_frame(session)
assert_success(response)
session.find.css("#delete", all=False)
def test_no_browsing_context_when_already_top_level(session, closed_window):
response = switch_to_parent_frame(session)
assert_error(response, "no such window")
def test_switch_from_iframe(session, inline, iframe):
session.url = inline(iframe("<p>foo"))
frame_element = session.find.css("iframe", all=False)
session.switch_frame(frame_element)
element = session.find.css("p", all=False)
result = switch_to_parent_frame(session)
assert_success(result)
with pytest.raises(NoSuchElementException):
element.text
def test_switch_from_top_level(session, inline):
session.url = inline("<p>foo")
element = session.find.css("p", all=False)
result = switch_to_parent_frame(session)
assert_success(result)
assert element.text == "foo"