X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fbehat%2Fmink%2Fsrc%2FElement%2FTraversableElement.php;fp=vendor%2Fbehat%2Fmink%2Fsrc%2FElement%2FTraversableElement.php;h=a5e05b9991ba81e197502ec9ae71912a4eeb6317;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/vendor/behat/mink/src/Element/TraversableElement.php b/vendor/behat/mink/src/Element/TraversableElement.php new file mode 100644 index 000000000..a5e05b999 --- /dev/null +++ b/vendor/behat/mink/src/Element/TraversableElement.php @@ -0,0 +1,297 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Behat\Mink\Element; + +use Behat\Mink\Exception\ElementNotFoundException; + +/** + * Traversable element. + * + * @author Konstantin Kudryashov + */ +abstract class TraversableElement extends Element +{ + /** + * Finds element by its id. + * + * @param string $id element id + * + * @return NodeElement|null + */ + public function findById($id) + { + return $this->find('named', array('id', $id)); + } + + /** + * Checks whether element has a link with specified locator. + * + * @param string $locator link id, title, text or image alt + * + * @return Boolean + */ + public function hasLink($locator) + { + return null !== $this->findLink($locator); + } + + /** + * Finds link with specified locator. + * + * @param string $locator link id, title, text or image alt + * + * @return NodeElement|null + */ + public function findLink($locator) + { + return $this->find('named', array('link', $locator)); + } + + /** + * Clicks link with specified locator. + * + * @param string $locator link id, title, text or image alt + * + * @throws ElementNotFoundException + */ + public function clickLink($locator) + { + $link = $this->findLink($locator); + + if (null === $link) { + throw new ElementNotFoundException($this->getDriver(), 'link', 'id|title|alt|text', $locator); + } + + $link->click(); + } + + /** + * Checks whether element has a button (input[type=submit|image|button|reset], button) with specified locator. + * + * @param string $locator button id, value or alt + * + * @return Boolean + */ + public function hasButton($locator) + { + return null !== $this->findButton($locator); + } + + /** + * Finds button (input[type=submit|image|button|reset], button) with specified locator. + * + * @param string $locator button id, value or alt + * + * @return NodeElement|null + */ + public function findButton($locator) + { + return $this->find('named', array('button', $locator)); + } + + /** + * Presses button (input[type=submit|image|button|reset], button) with specified locator. + * + * @param string $locator button id, value or alt + * + * @throws ElementNotFoundException + */ + public function pressButton($locator) + { + $button = $this->findButton($locator); + + if (null === $button) { + throw new ElementNotFoundException($this->getDriver(), 'button', 'id|name|title|alt|value', $locator); + } + + $button->press(); + } + + /** + * Checks whether element has a field (input, textarea, select) with specified locator. + * + * @param string $locator input id, name or label + * + * @return Boolean + */ + public function hasField($locator) + { + return null !== $this->findField($locator); + } + + /** + * Finds field (input, textarea, select) with specified locator. + * + * @param string $locator input id, name or label + * + * @return NodeElement|null + */ + public function findField($locator) + { + return $this->find('named', array('field', $locator)); + } + + /** + * Fills in field (input, textarea, select) with specified locator. + * + * @param string $locator input id, name or label + * @param string $value value + * + * @throws ElementNotFoundException + * + * @see NodeElement::setValue + */ + public function fillField($locator, $value) + { + $field = $this->findField($locator); + + if (null === $field) { + throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value|placeholder', $locator); + } + + $field->setValue($value); + } + + /** + * Checks whether element has a checkbox with specified locator, which is checked. + * + * @param string $locator input id, name or label + * + * @return Boolean + * + * @see NodeElement::isChecked + */ + public function hasCheckedField($locator) + { + $field = $this->findField($locator); + + return null !== $field && $field->isChecked(); + } + + /** + * Checks whether element has a checkbox with specified locator, which is unchecked. + * + * @param string $locator input id, name or label + * + * @return Boolean + * + * @see NodeElement::isChecked + */ + public function hasUncheckedField($locator) + { + $field = $this->findField($locator); + + return null !== $field && !$field->isChecked(); + } + + /** + * Checks checkbox with specified locator. + * + * @param string $locator input id, name or label + * + * @throws ElementNotFoundException + */ + public function checkField($locator) + { + $field = $this->findField($locator); + + if (null === $field) { + throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator); + } + + $field->check(); + } + + /** + * Unchecks checkbox with specified locator. + * + * @param string $locator input id, name or label + * + * @throws ElementNotFoundException + */ + public function uncheckField($locator) + { + $field = $this->findField($locator); + + if (null === $field) { + throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator); + } + + $field->uncheck(); + } + + /** + * Checks whether element has a select field with specified locator. + * + * @param string $locator select id, name or label + * + * @return Boolean + */ + public function hasSelect($locator) + { + return $this->has('named', array('select', $locator)); + } + + /** + * Selects option from select field with specified locator. + * + * @param string $locator input id, name or label + * @param string $value option value + * @param Boolean $multiple select multiple options + * + * @throws ElementNotFoundException + * + * @see NodeElement::selectOption + */ + public function selectFieldOption($locator, $value, $multiple = false) + { + $field = $this->findField($locator); + + if (null === $field) { + throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator); + } + + $field->selectOption($value, $multiple); + } + + /** + * Checks whether element has a table with specified locator. + * + * @param string $locator table id or caption + * + * @return Boolean + */ + public function hasTable($locator) + { + return $this->has('named', array('table', $locator)); + } + + /** + * Attach file to file field with specified locator. + * + * @param string $locator input id, name or label + * @param string $path path to file + * + * @throws ElementNotFoundException + * + * @see NodeElement::attachFile + */ + public function attachFileToField($locator, $path) + { + $field = $this->findField($locator); + + if (null === $field) { + throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator); + } + + $field->attachFile($path); + } +}