### 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
public void deselectByVisibleText(String text) {
    if (!isMultiple()) {
      throw new UnsupportedOperationException(
        "You may only deselect options of a multi-select");
    }
    List<WebElement> options = element.findElements(By.xpath(
      ".option[normalize-space(.) = " + Quotes.escape(text) + "]"));
    if (options.isEmpty()) {
      throw new NoSuchElementException("Cannot locate option with text: " + text);
    }
    for (WebElement option : options) {
      setSelected(option, false);
    }
  }
  private List<WebElement> findOptionsByValue(String value) {
    List<WebElement> options = element.findElements(By.xpath(
        ".option[@value = " + Quotes.escape(value) + "]"));
    if (options.isEmpty()) {
      throw new NoSuchElementException("Cannot locate option with value: " + value);
    }
    return options;
  }
  private void setSelectedByIndex(int index, boolean select) {
    String match = String.valueOf(index);
    for (WebElement option : getOptions()) {
      if (match.equals(option.getAttribute("index"))) {
        setSelected(option, select);
        return;
      }
    }