Skip to content

Commit

Permalink
Revert "[py] do not allow Select class to work with disabled selects"
Browse files Browse the repository at this point in the history
This reverts commit 0eb286a
  • Loading branch information
titusfortner committed Oct 28, 2022
1 parent fe4c149 commit bbc1663
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 11 deletions.
6 changes: 2 additions & 4 deletions py/selenium/webdriver/support/select.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,8 @@ def __init__(self, webelement) -> None:
"""
if webelement.tag_name.lower() != "select":
raise UnexpectedTagNameException(
"Select only works on <select> elements, not on <%s>" % webelement.tag_name
)
if not webelement.is_enabled():
raise NotImplementedError("Select element is disabled and may not be used.")
"Select only works on <select> elements, not on <%s>" %
webelement.tag_name)
self._el = webelement
multi = self._el.get_dom_attribute("multiple")
self.is_multiple = multi and multi != "false"
Expand Down
38 changes: 31 additions & 7 deletions py/test/selenium/webdriver/common/select_class_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,16 @@ def test_raises_exception_select_by_index_single_disabled(driver, pages):
sel.select_by_index(1)


@pytest.mark.xfail_firefox(reason='https://bugzilla.mozilla.org/show_bug.cgi?id=1429403')
@pytest.mark.xfail_remote
def test_select_disabled_by_index(driver, pages):
pages.load("formPage.html")
sel = Select(driver.find_element(By.NAME, disabledSelect['name']))
selected = sel.first_selected_option
sel.select_by_index(1)
assert selected == sel.first_selected_option


def test_select_by_value_single(driver, pages):
pages.load("formPage.html")
for select in [singleSelectValues1]:
Expand All @@ -71,6 +81,16 @@ def test_raises_exception_select_by_value_single_disabled(driver, pages):
sel.select_by_value(disabledSingleSelect["values"][1].lower())


@pytest.mark.xfail_firefox(reason='https://bugzilla.mozilla.org/show_bug.cgi?id=1429403')
@pytest.mark.xfail_remote
def test_select_disabled_by_value(driver, pages):
pages.load("formPage.html")
sel = Select(driver.find_element(By.NAME, disabledSelect['name']))
selected = sel.first_selected_option
sel.select_by_value('bar')
assert selected == sel.first_selected_option


def test_select_by_visible_text_single(driver, pages):
pages.load("formPage.html")

Expand All @@ -89,6 +109,16 @@ def test_raises_exception_select_by_text_single_disabled(driver, pages):
sel.select_by_visible_text(disabledSingleSelect["values"][1])


@pytest.mark.xfail_firefox(reason='https://bugzilla.mozilla.org/show_bug.cgi?id=1429403')
@pytest.mark.xfail_remote
def test_select_disabled_by_visible_text(driver, pages):
pages.load("formPage.html")
sel = Select(driver.find_element(By.NAME, disabledSelect['name']))
selected = sel.first_selected_option
sel.select_by_visible_text('Bar')
assert selected == sel.first_selected_option


def test_select_by_index_multiple(driver, pages):
pages.load("formPage.html")

Expand Down Expand Up @@ -253,7 +283,7 @@ def test_get_options(driver, pages):

def test_get_all_selected_options_single(driver, pages):
pages.load("formPage.html")
for select in [singleSelectValues1, singleSelectValues2]:
for select in [singleSelectValues1, singleSelectValues2, disabledSelect]:
opts = Select(driver.find_element(By.NAME, select["name"])).all_selected_options
assert len(opts) == 1
assert opts[0].text == select["values"][0]
Expand Down Expand Up @@ -290,12 +320,6 @@ def test_raises_exception_for_invalid_tag_name(driver, pages):
Select(driver.find_element(By.TAG_NAME, "div"))


def test_raises_exception_for_disabled_element(driver, pages):
pages.load("formPage.html")
with pytest.raises(NotImplementedError):
Select(driver.find_element(By.NAME, disabledSelect["name"]))


def test_deselect_by_index_non_existent(driver, pages):
pages.load("formPage.html")
for select in [multiSelectValues1, multiSelectValues2]:
Expand Down

0 comments on commit bbc1663

Please sign in to comment.