Testomatio - Test Management for Codeception
Set of useful functions for using CSS and XPath locators. Please check them before writing complex functional or acceptance tests.
public static combine($selector1, $selector2)
staticparam string $selector1param string $selector2throws Exceptionreturn stringApplies OR operator to any number of CSS or XPath selectors.
You can mix up CSS and XPath selectors here.
<?php use \Codeception\Util\Locator; $I->see('Title', Locator::combine('h1','h2','h3'));This will search for Title text in either h1, h2, or h3 tag. You can also combine CSS selector with XPath locator:
<?php use \Codeception\Util\Locator; $I->fillField(Locator::combine('form input[type=text]','//form/textarea[2]'), 'qwerty');As a result the Locator will produce a mixed XPath value that will be used in fillField action.
public static contains($element, $text)
param string $elementparam string $textreturn stringLocates an element containing a text inside.
Either CSS or XPath locator can be passed, however they will be converted to XPath.
<?php use Codeception\Util\Locator; Locator::contains('label', 'Name'); // label containing name Locator::contains('div[@contenteditable=true]', 'hello world');public static elementAt($element, $position)
param string $element CSS or XPath locatorparam int|string $position xPath indexreturn stringLocates element at position.
Either CSS or XPath locator can be passed as locator, position is an integer. If a negative value is provided, counting starts from the last element. First element has index 1
<?php use Codeception\Util\Locator; Locator::elementAt('//table/tr', 2); // second row Locator::elementAt('//table/tr', -1); // last row Locator::elementAt('table#grind>tr', -2); // previous than last rowpublic static find($element, array $attributes)
staticparam string $elementparam array $attributesreturn stringFinds element by it’s attribute(s)
<?php use \Codeception\Util\Locator; $I->seeElement(Locator::find('img', ['title' => 'diagram']));public static firstElement($element)
param string $elementreturn stringLocates first element of group elements.
Either CSS or XPath locator can be passed as locator, Equal to Locator::elementAt($locator, 1)
<?php use Codeception\Util\Locator; Locator::firstElement('//table/tr');public static href($url)
staticparam string $urlreturn stringMatches the a element with given URL
<?php use \Codeception\Util\Locator; $I->see('Log In', Locator::href('/login.php'));public static humanReadableString($selector)
param \Facebook\WebDriver\WebDriverBy|array|string $selectorreturn stringTransforms strict locator, \Facebook\WebDriver\WebDriverBy into a string representation
public static isCSS($selector)
param string $selectorreturn boolChecks that provided string is CSS selector
<?php Locator::isCSS('#user .hello') => true Locator::isCSS('body') => true Locator::isCSS('//body/p/user') => falsepublic static isClass($class)
param string $classreturn boolChecks that a string is valid CSS class
<?php Locator::isClass('.hello') => true Locator::isClass('body') => false Locator::isClass('//body/p/user') => falsepublic static isID($id)
param string $idreturn boolChecks that a string is valid CSS ID
<?php Locator::isID('#user') => true Locator::isID('body') => false Locator::isID('//body/p/user') => falsepublic static isPrecise($locator)
param \Facebook\WebDriver\WebDriverBy|array|string $locatorreturn boolpublic static isXPath($locator)
param string $locatorreturn boolChecks that locator is an XPath
<?php Locator::isXPath('#user .hello') => false Locator::isXPath('body') => false Locator::isXPath('//body/p/user') => truepublic static lastElement($element)
param string $elementreturn stringLocates last element of group elements.
Either CSS or XPath locator can be passed as locator, Equal to Locator::elementAt($locator, -1)
<?php use Codeception\Util\Locator; Locator::lastElement('//table/tr');public static option($value)
param string $valuereturn stringMatches option by text:
<?php use Codeception\Util\Locator; $I->seeElement(Locator::option('Male'), '#select-gender');public static tabIndex($index)
staticparam int $indexreturn stringMatches the element with given tab index
Do you often use the TAB key to navigate through the web page? How do your site respond to this navigation? You could try to match elements by their tab position using tabIndex method of Locator class.
<?php use \Codeception\Util\Locator; $I->fillField(Locator::tabIndex(1), 'davert'); $I->fillField(Locator::tabIndex(2) , 'qwerty'); $I->click('Login');