コード例 #1
0
 /**
  * @dataProvider providerLocatorContructorsArguments
  */
 public function testGettersShouldReturnValuesPassedToConstructor($url, $key, $type, $fieldset, $tab, $parameters, $pageKey)
 {
     $locator = new Locator($url, $key, $type, $fieldset, $tab, $parameters, $pageKey);
     $this->assertEquals($url, $locator->getPageUrl());
     $this->assertEquals($key, $locator->getKey());
     $this->assertEquals($type, $locator->getType());
     $this->assertEquals($fieldset, $locator->getFieldset());
     $this->assertEquals($tab, $locator->getTab());
     $this->assertEquals($parameters, $locator->getParameters());
     $this->assertEquals($pageKey, $locator->getPageKey());
 }
コード例 #2
0
ファイル: Page.php プロジェクト: irs/behat-uimap-extension
 /**
  * Returns XPath query of page element that correstonds to given locator
  *
  * @return string XPath query
  * @throws \OutOfRangeException If cannot find path by locator
  */
 public function getXpath(Locator $locator)
 {
     // prepare query
     $query = '';
     if ($locator->hasTab()) {
         $query .= "p:tab[@key='{$locator->getTab()}']";
     }
     if ($locator->hasFieldset()) {
         $query .= "//p:fieldset[@key='{$locator->getFieldset()}']";
     }
     if ($locator->hasKey()) {
         $query .= '//p:' . ($locator->getType() ?: '*') . "[@key='{$locator->getKey()}']";
     }
     $query .= '/ancestor-or-self::*/@xpath';
     // execute query
     $list = $this->query($query);
     // precess result
     if (!$list->length) {
         throw new \OutOfRangeException("Cannot find XPath by {$locator} on page '{$this->getKey()}'.");
     }
     $result = '';
     foreach ($list as $item) {
         $result .= $item->value;
     }
     if ($locator->hasParameters()) {
         $patterns = array_map(function ($p) {
             return "%{$p}%";
         }, array_keys($locator->getParameters()));
         $values = array_values($locator->getParameters());
         $result = str_replace($patterns, $values, $result);
     }
     return $result;
 }