### Feature and motivation

Currently `Select` methods work even the `option` is disabled. Or `select` is disabled.

I suggest these `selectByFoo` methods should throw an exception. 

### Usage example

```java
new Select(element).selectByVisibleText("fish");
```


### Pull request

see https://github.com/SeleniumHQ/selenium/pull/10814
}
  private WebElement mockOption(String name, boolean isSelected) {
    final WebElement optionBad = mock(WebElement.class, name);
    when(optionBad.isSelected()).thenReturn(isSelected);
    return optionBad;
  }
  private WebElement mockOption(String name, boolean isSelected, int index) {
    WebElement option = mockOption(name, isSelected);
    when(option.getAttribute("index")).thenReturn(String.valueOf(index));
    return option;
  }
  @Test
  public void shouldReturnOptionsWhichAreSelected() {
    final WebElement optionGood = mockOption("good", true);
    final WebElement optionBad = mockOption("bad", false);
    final List<WebElement> options = Arrays.asList(optionBad, optionGood);
    Select select = selectWithOptions(options);
    List<WebElement> returnedOptions = select.getAllSelectedOptions();
    assertThat(returnedOptions).hasSize(1);
    assertThat(returnedOptions.get(0)).isSameAs(optionGood);
  }
  @Test
  public void shouldReturnFirstSelectedOptions() {
    final WebElement firstOption = mockOption("first", true);
    final WebElement secondOption = mockOption("second", true);
    final List<WebElement> options = Arrays.asList(firstOption, secondOption);
    Select select = selectWithOptions(options);
    WebElement firstSelected = select.getFirstSelectedOption();
    assertThat(firstSelected).isSameAs(firstOption);
  }