The instruction navigator is similar to the
BaseMenu navigator in its intent, and some of the underlying functionality. However, there is a crucial difference in that the base menu navigator uses iteration for predictable elements. The instruction navigator is for non-iterative navigation instructions.
It is also intended for general functionality that might change based off of your theme. Unlike the
SystemConfiguration navigator, which is complicated but prone to stasis, something like logging in to your account is both complex and prone to change. It involves clicks on non-pattern-able HTML elements and it is heavily reused. A lot of navigation in Magento is going to be directly scripted via
WebDriver when it is not repeatable and not configurable. But if both of those conditions are true (repeatability and configurability) then that makes an action a candidate for using the instruction navigator.
The instruction set is a multi-dimensional array in the form of
[ [action, xPath], [action, xPath] ]
Note that the individual instruction arrays are not key => value pairs.
Currently there are two kinds of actions
- Mouse Move
- Mouse Click
There is no particular reason other than utility for those being the only actions being available.
The individual actions are the string values
mouseMoveTo. They are generally going to be referenced by the static constants in the
Magium\WebDriver\WebDriver class. The
ThemeConfiguration class provides a simple example for navigating to the login page.
protected $loginInstructions = [ [\Magium\WebDriver\WebDriver::INSTRUCTION_MOUSE_CLICK, '//div[@class="account-cart-wrapper"]/descendant::span[.="Account"]'], [\Magium\WebDriver\WebDriver::INSTRUCTION_MOUSE_CLICK, '//div[@id="header-account"]/descendant::a[@title="My Account"]'] ];
That’s about it.