/** * Returns element instance. * * @return IElement */ public function getObject() { if (!is_object($this->object)) { $web_element = WebElement::fromNodeElement($this->locateElement()); $this->object = new $this->className($this->getName(), $web_element); $this->object->setContainer($this->getContainer()); } return $this->object; }
/** * Create AbstractTypifiedElement from a given NodeElements. * * @param array|NodeElement[] $node_elements Node Elements. * * @return ITypifiedElement * @throws FormException When unable to create typified element. */ public function typify(array $node_elements) { $node_element = $node_elements[0]; $tag_name = $node_element->getTagName(); if ($tag_name == 'input') { $input_type = $node_element->getAttribute('type'); if ($input_type == self::CHECKBOX_INPUT) { return Checkbox::fromNodeElement($node_element); } elseif ($input_type == self::RADIO_INPUT) { return RadioGroup::fromNodeElements($node_elements); } elseif ($input_type == self::FILE_INPUT) { return FileInput::fromNodeElement($node_element); } else { /*if ( is_null($input_type) || ($input_type == self::TEXT_INPUT) || ($input_type == self::PASSWORD_INPUT) ) {*/ return TextInput::fromNodeElement($node_element); } } elseif ($tag_name == 'select') { return Select::fromNodeElement($node_element); } elseif ($tag_name == 'textarea') { return TextInput::fromNodeElement($node_element); } throw new FormException('Unable create typified element for ' . (string) WebElement::fromNodeElement($node_element), FormException::TYPE_UNKNOWN_FIELD); }
/** * Creates Element instance based on existing NodeElement instance. * * @param NodeElement $node_element Node element. * @param IPageFactory $page_factory Page factory. * * @return static */ public static function fromNodeElement(NodeElement $node_element, IPageFactory $page_factory = null) { $wrapped_element = WebElement::fromNodeElement($node_element); return new static($wrapped_element); }