示例#1
0
 /**
  * @return PHPUnit_Extensions_Selenium2TestCase_Element_Select
  */
 public function select(PHPUnit_Extensions_Selenium2TestCase_Element $element)
 {
     $tag = $element->name();
     if ($tag !== 'select') {
         throw new InvalidArgumentException("The element is not a `select` tag but a `{$tag}`.");
     }
     return PHPUnit_Extensions_Selenium2TestCase_Element_Select::fromElement($element);
 }
示例#2
0
 /**
  * Retrieve relative xpath from context to element
  *
  * @param \PHPUnit_Extensions_Selenium2TestCase_Element $element
  * @param \PHPUnit_Extensions_Selenium2TestCase_Element $context
  * @param string $path
  * @param bool $includeLastIndex
  * @return null
  */
 protected function getRelativeXpath(\PHPUnit_Extensions_Selenium2TestCase_Element $element, \PHPUnit_Extensions_Selenium2TestCase_Element $context, $path = '', $includeLastIndex = true)
 {
     if ($element->equals($context)) {
         return '.' . $path;
     }
     $parentLocator = new Locator('..', Locator::SELECTOR_XPATH);
     $parentElement = $element->element($this->getSearchCriteria($parentLocator));
     $childrenLocator = new Locator('*', Locator::SELECTOR_XPATH);
     $index = 1;
     $tag = $element->name();
     if (!$includeLastIndex) {
         return $this->getRelativeXpath($parentElement, $context, '/' . $tag);
     }
     foreach ($parentElement->elements($this->getSearchCriteria($childrenLocator)) as $child) {
         if ($child->equals($element)) {
             return $this->getRelativeXpath($parentElement, $context, '/' . $tag . '[' . $index . ']' . $path);
         }
         if ($child->name() == $tag) {
             ++$index;
         }
     }
     return null;
 }