blob: f480784fb5f13791486b5a1a7624b3b41da0f795 [file] [log] [blame]
import pytest
from webdriver.error import NoSuchElementException
from webdriver.transport import Response
from tests.support.asserts import assert_error, assert_success
def switch_to_window(session, handle):
return session.transport.send(
"POST", "session/{session_id}/window".format(**vars(session)),
{"handle": handle})
def test_null_parameter_value(session, http):
path = "/session/{session_id}/window".format(**vars(session))
with http.post(path, None) as response:
assert_error(Response.from_http(response), "invalid argument")
def test_null_response_value(session):
response = switch_to_window(session, session.new_window())
value = assert_success(response)
assert value is None
def test_no_top_browsing_context(session):
original_handle = session.window_handle
new_handle = session.new_window()
session.window.close()
assert original_handle not in session.handles, "Unable to close window"
response = switch_to_window(session, new_handle)
assert_success(response)
assert session.window_handle == new_handle
def test_no_browsing_context(session, url):
new_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)
deleteframe = session.find.css("#delete-frame", all=False)
session.switch_frame(deleteframe)
button = session.find.css("#remove-parent", all=False)
button.click()
response = switch_to_window(session, new_handle)
assert_success(response)
assert session.window_handle == new_handle
def test_switch_to_window_sets_top_level_context(session, inline, iframe):
session.url = inline(iframe("<p>foo"))
frame = session.find.css("iframe", all=False)
session.switch_frame(frame)
session.find.css("p", all=False)
response = switch_to_window(session, session.window_handle)
assert_success(response)
session.find.css("iframe", all=False)
def test_element_not_found_after_tab_switch(session, inline):
session.url = inline("<p id='a'>foo")
paragraph = session.find.css("p", all=False)
session.window_handle = session.new_window(type_hint="tab")
with pytest.raises(NoSuchElementException):
paragraph.attribute("id")