1from tests.support.asserts import assert_error, assert_success
2
3
4def get_element_tag_name(session, element_id):
5    return session.transport.send(
6        "GET", "session/{session_id}/element/{element_id}/name".format(
7            session_id=session.session_id,
8            element_id=element_id))
9
10
11def test_no_top_browsing_context(session, closed_window):
12    original_handle, element = closed_window
13    response = get_element_tag_name(session, element.id)
14    assert_error(response, "no such window")
15    response = get_element_tag_name(session, "foo")
16    assert_error(response, "no such window")
17
18    session.window_handle = original_handle
19    response = get_element_tag_name(session, element.id)
20    assert_error(response, "no such element")
21
22
23def test_no_browsing_context(session, closed_frame):
24    response = get_element_tag_name(session, "foo")
25    assert_error(response, "no such window")
26
27
28def test_element_not_found(session):
29    result = get_element_tag_name(session, "foo")
30    assert_error(result, "no such element")
31
32
33def test_element_stale(session, inline):
34    session.url = inline("<input id=foo>")
35    element = session.find.css("input", all=False)
36    session.refresh()
37
38    result = get_element_tag_name(session, element.id)
39    assert_error(result, "stale element reference")
40
41
42def test_get_element_tag_name(session, inline):
43    session.url = inline("<input id=foo>")
44    element = session.find.css("input", all=False)
45
46    result = get_element_tag_name(session, element.id)
47    assert_success(result, "input")
48