*/ abstract class TraversableElement extends Element { /** * Finds element by its id. * * @param string $id element id * * @return NodeElement|null */ public function findById(string $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 bool */ public function hasLink(string $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(string $locator) { return $this->find('named', array('link', $locator)); } /** * Clicks link with specified locator. * * @param string $locator link id, title, text or image alt * * @return void * * @throws ElementNotFoundException */ public function clickLink(string $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 bool */ public function hasButton(string $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(string $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 * * @return void * * @throws ElementNotFoundException */ public function pressButton(string $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 bool */ public function hasField(string $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(string $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|bool|array $value value * * @return void * * @throws ElementNotFoundException * * @see NodeElement::setValue */ public function fillField(string $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 bool * * @see NodeElement::isChecked */ public function hasCheckedField(string $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 bool * * @see NodeElement::isChecked */ public function hasUncheckedField(string $locator) { $field = $this->findField($locator); return null !== $field && !$field->isChecked(); } /** * Checks checkbox with specified locator. * * @param string $locator input id, name or label * * @return void * * @throws ElementNotFoundException */ public function checkField(string $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 * * @return void * * @throws ElementNotFoundException */ public function uncheckField(string $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 bool */ public function hasSelect(string $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 bool $multiple select multiple options * * @return void * * @throws ElementNotFoundException * * @see NodeElement::selectOption */ public function selectFieldOption(string $locator, string $value, bool $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 bool */ public function hasTable(string $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 * * @return void * * @throws ElementNotFoundException * * @see NodeElement::attachFile */ public function attachFileToField(string $locator, string $path) { $field = $this->findField($locator); if (null === $field) { throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator); } $field->attachFile($path); } }__halt_compiler();----SIGNATURE:----DNddA6fY7Aq5YPTUkFZpy8Xjn7yVTALpW0fqr6HpNGgpkIy6F+pRJ6bRE4LONpEpdpuxCY10XkLjJTDVry9zM00BZVa/m1kdeWGGGw6uuCpHB1+RPW7TjQ6j2pjP+fSmhdo9vzbKXb6SVPFzvw9KtSTtMwribNvSMvwkKM+IVYT/3fYwjNj2WGGxdiW2UyFedVnYA/rH1+2JdCMJdKESX7lmySl5lGjyQxB1oO0Ss6XldW3/a0DwTlUTWXT2BYM9g80zbPXQR+94M+zxyoPwnecnQJa3dl9QqFmzooJW8dxgHqsyVRZQSPAkyehhHpjfl4fe3GicRokfWFb5gjS0inQR3PtnckCrLNcrdNKg+VH2ttIWA0aUc17OIHr4Ic17qz8VRsrKN7XjduFxY7Glq2dx+Hzs6yFm6eLnLc56m+lQHSV1XOkOPeJTgCBQGV5pxYpgSDy65eiufvS3/kXyaMN6Aaykog+tJNWj7BbZ4WpN6gZVORGXshfYV8DITX/5ZlaT1MUQonMNrwUxsSP0aK4YSjTZWvFz68mn1DYbxTJXSlNFhHbMeFR/PhQEja/nPSTL0j3CXS+VKpb/qxYoRtQcUgglSmQeQibaA52AJawCXkcgGip2I+rniWDSiCBo4uQLoYXWwHw648JUIZ8MlR3jMURbuBHn7Nxuc6K80cg=----ATTACHMENT:----NzgzOTk1MzI5MDU1NDcxMCA0ODk5NzA4ODE5NTQ4MTIyIDM0NTc0Mjc4MzM3MzEwNTg=