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