/** * @param \PHPUnit_Extensions_Selenium2TestCase_Element $form * @param array $values * @param bool $clear * @throws \RuntimeException * @throws \Nette\NotImplementedException * @return \PHPUnit_Extensions_Selenium2TestCase_Element */ protected function fillForm(\PHPUnit_Extensions_Selenium2TestCase_Element $form, array $values, $clear = TRUE) { // $this->accessing(); // todo: why not? foreach ($values as $name => $value) { $element = $form->byName($name); /** @var \PHPUnit_Extensions_Selenium2TestCase_Element $element */ if (($tagName = strtolower($element->name())) === 'input') { if (($type = strtolower($element->attribute('type'))) === 'checkbox') { if ($value) { if (!$element->selected()) { if (!$this->tryClickOnLabel($form, $type, $name)) { $element->click(); } } } elseif (!$value) { if ($element->selected()) { if (!$this->tryClickOnLabel($form, $type, $name)) { $element->click(); } } } } elseif ($type === 'radio') { if ($this->tryClickOnLabel($form, $type, $name, $value)) { continue; } foreach ($form->elements($this->using('name')->value($name)) as $element) { /** @var \PHPUnit_Extensions_Selenium2TestCase_Element $element */ if ($element->value() == $value) { $element->click(); continue 2; } } throw new \RuntimeException("Radio input with value {$value} not found."); } else { if ($clear) { $element->clear(); } $element->value($value); } } elseif ($tagName === 'textarea') { if ($clear) { $element->clear(); } $element->value($value); } elseif ($tagName === 'select') { throw new Nette\NotImplementedException(); } } return $form; }