Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GlobalsearchElement.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\Client\Locator;
10 use Magento\Mtf\Client\ElementInterface;
11 
15 class GlobalsearchElement extends SimpleElement
16 {
22  protected $searchIcon = '[for="search-global"]';
23 
29  protected $initializedSuggest = './/*[contains(@class,"search-global-field") and .//*[@class="mage-suggest"]]';
30 
36  protected $searchInput = '#search-global';
37 
43  protected $searchResult = '.autocomplete-results';
44 
50  protected $resultItem = 'li';
51 
58  public function setValue($value)
59  {
60  $this->eventManager->dispatchEvent(['set_value'], [__METHOD__, $this->getAbsoluteSelector()]);
61  $this->waitInitElement();
62  if (!$this->find($this->searchInput)->isVisible()) {
63  $this->find($this->searchIcon)->click();
64  }
65  $this->find($this->searchInput)->keys(str_split($value));
66  $this->waitResult();
67  }
68 
75  protected function waitInitElement()
76  {
77  $selector = $this->initializedSuggest;
78 
79  $browser = $this->driver;
80  $this->driver->waitUntil(
81  function () use ($browser, $selector) {
82  return $browser->find($selector, Locator::SELECTOR_XPATH)->isVisible() ? true : null;
83  }
84  );
85  }
86 
92  public function waitResult()
93  {
94  $selector = $this->searchResult;
95  $browser = $this->driver;
96 
97  $this->driver->waitUntil(
98  function () use ($browser, $selector) {
99  return $browser->find($selector)->isVisible() ? true : null;
100  }
101  );
102  }
103 
109  public function getValue()
110  {
111  throw new \BadMethodCallException('Not applicable for this class of elements (GlobalSearch)');
112  }
113 
121  {
122  $searchResult = $this->find($this->searchResult);
123  if (!$searchResult->isVisible()) {
124  return false;
125  }
126  $searchResults = $this->getSearchResults();
127  return in_array($value, $searchResults);
128  }
129 
135  protected function getSearchResults()
136  {
138  $searchResult = $this->find($this->searchResult);
139  $resultItems = $searchResult->getElements($this->resultItem);
140  $resultArray = [];
141 
143  foreach ($resultItems as $resultItem) {
144  $resultItemLink = $resultItem->find('a');
145  $resultText = $resultItemLink->isVisible()
146  ? trim($resultItemLink->getText())
147  : trim($resultItem->getText());
148  $resultArray[] = $resultText;
149  }
150 
151  return $resultArray;
152  }
153 }
taxRateField find('.mselect-list') .on( 'click.mselect-edit'
Definition: edit.phtml:162
$value
Definition: gender.phtml:16