9 use Magento\Mtf\Client\Locator;
11 use Magento\Mtf\Client\Element\SimpleElement;
25 protected $editLink =
'.action-menu-item[href*="edit"]';
46 protected $selectItem =
'tbody tr [data-action="select-row"]';
53 protected $rowTemplate =
'td[*[contains(.,normalize-space("%s"))]]';
88 protected $actionList =
'.//span[contains(@class, "action-menu-item") and .= "%s"]';
95 protected $columnHeader =
'.//*[@data-role="grid-wrapper"]//th/span[.="%s"]';
102 protected $rowById =
".//tr[td//input[@data-action='select-row' and @value='%s']]";
109 protected $columnNumber =
".//th[span[.='%s']][not(ancestor::*[@class='sticky-header'])]/preceding-sibling::th";
124 private $gridHeader =
'.//div[@class="admin__data-grid-header"][(not(ancestor::*[@class="sticky-header"]) and not(contains(@style,"visibility: hidden"))) or (ancestor::*[@class="sticky-header" and not(contains(@style,"display: none"))])]';
156 protected $sortLink =
'.//div[@data-role="grid-wrapper"]//th[contains(@class, "%s")]/span[contains(text(), "%s")]';
163 protected $currentPage =
".//*[@data-ui-id='current-page-input'][not(ancestor::*[@class='sticky-header'])]";
172 $chipsHolder = $this->getGridHeaderElement()->find($this->appliedFiltersList);
173 if ($chipsHolder->isVisible()) {
174 parent::resetFilter();
187 $browser = $this->_rootElement;
190 function () use ($browser, $selector) {
191 $filter = $browser->find($selector);
192 return $filter->isVisible() ==
true ? true :
null;
206 $toggleFilterButton = $this->_rootElement->find($this->filterButton);
207 $searchButton = $this->_rootElement->find($this->searchButton);
208 if ($toggleFilterButton->isVisible() && !
$searchButton->isVisible()) {
209 $toggleFilterButton->click();
210 $browser = $this->_rootElement;
227 $rowItem->find($this->editLink)->click();
239 parent::search($filter);
240 $this->waitForElementNotVisible($this->searchButton);
257 throw new \Exception(
"Searched item was not found by filter\n" . print_r($filter,
true));
273 $rowItem->find($this->selectItem)->click();
275 throw new \Exception(
"Searched item was not found by filter\n" . print_r($filter,
true));
289 public function massaction(array
$items, $action, $acceptAlert =
false, $massActionSelection =
'')
293 if ($this->_rootElement->find($this->noRecords)->isVisible()) {
297 if ($massActionSelection) {
302 $element = $this->browser->find($this->alertModal);
304 $modal = $this->blockFactory->create(
305 \
Magento\Ui\Test\Block\Adminhtml\Modal::class,
308 $modal->acceptAlert();
321 for (
$i = 1;
$i <= 2;
$i++) {
322 $massActionButton =
'(' . $this->massActionToggleButton .
")[$i]";
323 $massActionList =
'(' . $this->massActionToggleList .
")[$i]";
324 if ($this->_rootElement->find($massActionButton, Locator::SELECTOR_XPATH)->isVisible()) {
325 $this->_rootElement->find($massActionButton, Locator::SELECTOR_XPATH)->click();
327 ->find(sprintf($massActionList, $massActionSelection), Locator::SELECTOR_XPATH)
342 $actionType = is_array($action) ? key($action) : $action;
343 $this->getGridHeaderElement()->find($this->actionButton)->click();
344 $toggle = $this->getGridHeaderElement()->find(sprintf($this->actionList, $actionType), Locator::SELECTOR_XPATH);
346 if ($toggle->isVisible() ===
false) {
347 $this->getGridHeaderElement()->find($this->actionButton)->click();
350 if (is_array($action)) {
351 $locator = sprintf($this->actionList, end($action));
352 $this->getGridHeaderElement()->find($locator, Locator::SELECTOR_XPATH)->hover();
353 $this->getGridHeaderElement()->find($locator, Locator::SELECTOR_XPATH)->click();
370 foreach ($items as
$item) {
371 $this->_rootElement->find($this->currentPage, Locator::SELECTOR_XPATH)->setValue(
'');
383 throw new \Exception(
"Searched item was not found\n" . print_r(
$item,
true));
397 $reverseSort = $sort ==
'desc' ?
'asc' :
'desc';
398 $sortBlock = $this->_rootElement->find(sprintf($this->sortLink, $reverseSort, $field), Locator::SELECTOR_XPATH);
399 if ($sortBlock->isVisible()) {
415 $this->_rootElement->find(sprintf($this->columnHeader, $columnLabel), Locator::SELECTOR_XPATH)->click();
426 return $this->_rootElement->find($this->selectItem)->getValue();
438 $rowsCheckboxes = $this->_rootElement->getElements($this->selectItem);
440 foreach ($rowsCheckboxes as $checkbox) {
441 $ids[] = $checkbox->getValue();
456 $this->_rootElement->getElements(sprintf($this->columnNumber, $headerLabel), Locator::SELECTOR_XPATH)
458 $selector = sprintf($this->rowById,
$id) . sprintf($this->cellByHeader,
$columnNumber);
460 return $this->_rootElement->find($selector, Locator::SELECTOR_XPATH)->getText();
470 $this->_rootElement->find($this->fullTextSearchField)->setValue(
$text);
471 $this->_rootElement->find($this->fullTextSearchButton)->click();
483 $rows = $this->_rootElement->getElements($this->rowItem);
484 foreach ($rows as
$row) {
487 $rowData[$columnName] = trim(
$row->find(
'div[data-index="' . $columnName .
'"]')->getText());
501 private function getGridHeaderElement()
503 return $this->_rootElement->find($this->gridHeader, Locator::SELECTOR_XPATH);
searchAndOpen(array $filter)
selectItems(array $items, $isSortable=true)
selectMassAction($massActionSelection)
getRowsData(array $columns)
getColumnValue($id, $headerLabel)
searchAndSelect(array $filter)
clickEditLink(SimpleElement $rowItem)
sortByColumn($columnLabel)
sortGridByField($field, $sort="desc")