### 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
verify(firstOption).click();
    verify(secondOption, never()).click();
  }
  @Test
  public void shouldAllowOptionsToBeDeselectedByIndex() {
    final WebElement firstOption = mockOption("first", true, 2);
    final WebElement secondOption = mockOption("second", false, 1);
    Select select = selectWithOptions(Arrays.asList(firstOption, secondOption));
    select.deselectByIndex(2);
    verify(firstOption).click();
    verify(secondOption, never()).click();
  }
  @Test
  public void shouldAllowOptionsToBeDeselectedByReturnedValue() {
    final WebElement firstOption = mockOption("first", true);
    final WebElement secondOption = mockOption("third", false);
    final WebElement element = mockSelectWebElement("multiple");
    when(element.findElements(By.xpath(".option[@value = \"b\"]")))
        .thenReturn(Arrays.asList(firstOption, secondOption));
    Select select = new Select(element);
    select.deselectByValue("b");
    verify(firstOption).click();
    verify(secondOption, never()).click();
  }
  @Test
  public void shouldFallBackToSlowLooksUpsWhenGetByVisibleTextFailsAndThereIsASpace() {
    final WebElement firstOption = mock(WebElement.class, "first");
    final By xpath1 = By.xpath(".option[normalize-space(.) = \"foo bar\"]");
    final By xpath2 = By.xpath(".option[contains(., \"foo\")]");
    final WebElement element = mockSelectWebElement("multiple");