Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Attributes
Menu Class Reference
Inheritance diagram for Menu:

Public Member Functions

 getTopMenuItems ()
 
 navigate ($menuItem, $waitMenuItemNotVisible=true)
 
 isMenuItemVisible ($menuItem)
 

Protected Attributes

 $mainMenu = './/li[@role="menu-item"]/a[span="%s"]'
 
 $subMenu = './/li[@role="menu-item" and a[span="%s"]]/div[contains(@class, "submenu")]'
 
 $subMenuItem = '//li[@role="menu-item"]//a[span="%s"]'
 
 $parentMenuLevel = 'li.parent.level-0:nth-of-type(%s)'
 

Detailed Description

Top menu navigation block.

Definition at line 15 of file Menu.php.

Member Function Documentation

◆ getTopMenuItems()

getTopMenuItems ( )

Returns array of parent menu items present on dashboard menu.

Returns
array

Definition at line 50 of file Menu.php.

51  {
52  $navigationMenu = $this->_rootElement;
53  $menuItems = [];
54  $counter = 1;
55  $textSelector = 'a span';
56  while ($navigationMenu->find(sprintf($this->parentMenuLevel, $counter))->isVisible()) {
57  $menuItems[] = strtolower(
58  $navigationMenu->find(sprintf($this->parentMenuLevel, $counter))
59  ->find($textSelector)
60  ->getText()
61  );
62  $counter++;
63  }
64  return $menuItems;
65  }

◆ isMenuItemVisible()

isMenuItemVisible (   $menuItem)

Check if menu item is visible.

Parameters
string$menuItem
Returns
bool

Definition at line 113 of file Menu.php.

114  {
115  $menuChain = array_map('trim', explode('>', $menuItem));
116  $mainMenu = $menuChain[0];
117  $subMenu = isset($menuChain[1]) ? $menuChain[1] : null;
118 
119  $mainMenuElement = $this->_rootElement->find(sprintf($this->mainMenu, $mainMenu), Locator::SELECTOR_XPATH);
120  if (!$mainMenuElement->isVisible()) {
121  return false;
122  }
123  if ($subMenu === null) {
124  return true;
125  }
126  $mainMenuElement->click();
127 
128  $subMenuSelector = sprintf($this->subMenu, $mainMenu);
129  $this->waitForElementVisible($subMenuSelector, Locator::SELECTOR_XPATH);
130  $subMenuItem = $subMenuSelector . sprintf($this->subMenuItem, $subMenu);
131  return $this->_rootElement->find($subMenuItem, Locator::SELECTOR_XPATH)->isVisible();
132  }

◆ navigate()

navigate (   $menuItem,
  $waitMenuItemNotVisible = true 
)

Open backend page via menu.

Parameters
string$menuItem
bool$waitMenuItemNotVisible
Returns
void
Exceptions

Definition at line 75 of file Menu.php.

76  {
77  $menuChain = array_map('trim', explode('>', $menuItem));
78  $mainMenu = $menuChain[0];
79  $subMenu = isset($menuChain[1]) ? $menuChain[1] : null;
80 
81  // Click on element in main menu
82  $mainMenuElement = $this->_rootElement->find(sprintf($this->mainMenu, $mainMenu), Locator::SELECTOR_XPATH);
83  if (!$mainMenuElement->isVisible()) {
84  throw new \Exception('Main menu item "' . $mainMenu . '" is not visible.');
85  }
86  $mainMenuElement->click();
87 
88  // Click on element in submenu
89  if ($subMenu === null) {
90  return;
91  }
92  $subMenuSelector = sprintf($this->subMenu, $mainMenu);
93  $this->waitForElementVisible($subMenuSelector, Locator::SELECTOR_XPATH);
94  $subMenuItem = $subMenuSelector . sprintf($this->subMenuItem, $subMenu);
95  $this->waitForElementVisible($subMenuItem, Locator::SELECTOR_XPATH);
96  // Resolve an issue on with "Offset within element cannot be scrolled into view" on low screen resolution
97  try {
98  $this->_rootElement->find($subMenuItem, Locator::SELECTOR_XPATH)->hover();
99  } catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
100  }
101  $this->_rootElement->find($subMenuItem, Locator::SELECTOR_XPATH)->click();
102  if ($waitMenuItemNotVisible) {
103  $this->waitForElementNotVisible($subMenuSelector, Locator::SELECTOR_XPATH);
104  }
105  }

Field Documentation

◆ $mainMenu

$mainMenu = './/li[@role="menu-item"]/a[span="%s"]'
protected

Definition at line 22 of file Menu.php.

◆ $parentMenuLevel

$parentMenuLevel = 'li.parent.level-0:nth-of-type(%s)'
protected

Definition at line 43 of file Menu.php.

◆ $subMenu

$subMenu = './/li[@role="menu-item" and a[span="%s"]]/div[contains(@class, "submenu")]'
protected

Definition at line 29 of file Menu.php.

◆ $subMenuItem

$subMenuItem = '//li[@role="menu-item"]//a[span="%s"]'
protected

Definition at line 36 of file Menu.php.


The documentation for this class was generated from the following file: