<?php // Copyright 2004-present Facebook. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. namespace Facebook\WebDriver; use Facebook\WebDriver\Exception\NoSuchElementException; use Facebook\WebDriver\Exception\UnsupportedOperationException; /** * Models an element of select type, providing helper methods to select and deselect options. */ interface WebDriverSelectInterface { /** * @return bool Whether this select element support selecting multiple options. */ public function isMultiple(); /** * @return WebDriverElement[] All options belonging to this select tag. */ public function getOptions(); /** * @return WebDriverElement[] All selected options belonging to this select tag. */ public function getAllSelectedOptions(); /** * @throws NoSuchElementException * * @return WebDriverElement The first selected option in this select tag (or the currently selected option in a * normal select) */ public function getFirstSelectedOption(); /** * Select the option at the given index. * * @param int $index The index of the option. (0-based) * * @throws NoSuchElementException */ public function selectByIndex($index); /** * Select all options that have value attribute matching the argument. That is, when given "foo" this would * select an option like: * * `<option value="foo">Bar</option>` * * @param string $value The value to match against. * * @throws NoSuchElementException */ public function selectByValue($value); /** * Select all options that display text matching the argument. That is, when given "Bar" this would * select an option like: * * `<option value="foo">Bar</option>` * * @param string $text The visible text to match against. * * @throws NoSuchElementException */ public function selectByVisibleText($text); /** * Select all options that display text partially matching the argument. That is, when given "Bar" this would * select an option like: * * `<option value="bar">Foo Bar Baz</option>` * * @param string $text The visible text to match against. * * @throws NoSuchElementException */ public function selectByVisiblePartialText($text); /** * Deselect all options in multiple select tag. * * @throws UnsupportedOperationException If the SELECT does not support multiple selections */ public function deselectAll(); /** * Deselect the option at the given index. * * @param int $index The index of the option. (0-based) * @throws UnsupportedOperationException If the SELECT does not support multiple selections */ public function deselectByIndex($index); /** * Deselect all options that have value attribute matching the argument. That is, when given "foo" this would * deselect an option like: * * `<option value="foo">Bar</option>` * * @param string $value The value to match against. * @throws UnsupportedOperationException If the SELECT does not support multiple selections */ public function deselectByValue($value); /** * Deselect all options that display text matching the argument. That is, when given "Bar" this would * deselect an option like: * * `<option value="foo">Bar</option>` * * @param string $text The visible text to match against. * @throws UnsupportedOperationException If the SELECT does not support multiple selections */ public function deselectByVisibleText($text); /** * Deselect all options that display text matching the argument. That is, when given "Bar" this would * deselect an option like: * * `<option value="foo">Foo Bar Baz</option>` * * @param string $text The visible text to match against. * @throws UnsupportedOperationException If the SELECT does not support multiple selections */ public function deselectByVisiblePartialText($text); }