Use Codeception's Locator Functions in the Magento Functional Testing Framework
This topic was updated due to the 1.0.0 MFTF release.
Defining Locator::functions in Elements
Codeception has a set of very useful Locator Functions that may be used by elements inside a section.
Declaration of an element with a locatorFunction
can be done as follows:
<element name="simpleLocator" type="button" locatorFunction="Locator::contains('label', 'Name')"/>
When using the locatorFunction
, you can also omit Locator::
for code simplicity.
<element name="simpleLocatorShorthand" type="button" locatorFunction="contains('label', 'Name')"/>
An element’s locatorFunction
can also be parameterized the same way as parameterized selectors.
<element name="simpleLocatorTwoParam" type="button" locatorFunction="contains({{arg1}}, {{arg2}})" parameterized="true"/>
Lastly, an element cannot have both a selector
and a locatorFunction
.
Calling Elements that use locatorFunction
Given the above element definitions, we call the elements in a test just like any other element.
No special reference is required, as you are still just referring to an element
inside a section
.
<test name="LocatorFuctionTest">
<click stepKey="SimpleLocator" selector="{{LocatorFunctionSection.simpleLocator}}"/>
<click stepKey="TwoParamLiteral" selector="{{LocatorFunctionSection.simpleLocatorTwoParam('string1', 'string2')}}"/>
</test>