import pytest from tests.support.asserts import assert_error, assert_success def is_element_enabled(session, element_id): return session.transport.send( "GET", "session/{session_id}/element/{element_id}/enabled".format( session_id=session.session_id, element_id=element_id ) ) def test_no_top_browsing_context(session, closed_window): original_handle, element = closed_window response = is_element_enabled(session, element.id) assert_error(response, "no such window") response = is_element_enabled(session, "foo") assert_error(response, "no such window") session.window_handle = original_handle response = is_element_enabled(session, element.id) assert_error(response, "no such element") def test_no_browsing_context(session, closed_frame): response = is_element_enabled(session, "foo") assert_error(response, "no such window") def test_element_stale(session, inline): session.url = inline("") element = session.find.css("input", all=False) session.refresh() result = is_element_enabled(session, element.id) assert_error(result, "stale element reference") @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_form_control_disabled(session, inline, element): session.url = inline("<{} disabled/>".format(element)) element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, False) @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_form_control_enabled(session, inline, element): session.url = inline("<{}/>".format(element)) element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, True) @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_fieldset_disabled_descendant(session, inline, element): session.url = inline("
".format(element)) element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, False) @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_fieldset_enabled_descendant(session, inline, element): session.url = inline("".format(element)) element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, True) @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_fieldset_disabled_descendant_legend(session, inline, element): session.url = inline("".format(element)) element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, True) @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_fieldset_enabled_descendant_legend(session, inline, element): session.url = inline("".format(element)) element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, True) @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_xhtml_form_control_disabled(session, inline, element): session.url = inline("""<{} disabled="disabled"/>""".format(element), doctype="xhtml") element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, False) @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"]) def test_xhtml_form_control_enabled(session, inline, element): session.url = inline("""<{}/>""".format(element), doctype="xhtml") element = session.find.css(element, all=False) result = is_element_enabled(session, element.id) assert_success(result, True) def test_xml_always_not_enabled(session, inline): session.url = inline("""