Codeception\Util\Locator
Set of useful functions for using CSS and XPath locators. Please check them before writing complex functional or acceptance tests.
combine
static
Applies 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.
static
param
$selector1param
$selector2throws
\Exceptionreturn
string
contains
static
Locates 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');
param
$elementparam
$textreturn
string
elementAt
static
Locates 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 row
param
$element CSS or XPath locatorparam
$position xpath indexreturn
mixed
find
static
Finds element by it's attribute(s)
<?php
use \Codeception\Util\Locator;
$I->seeElement(Locator::find('img', ['title' => 'diagram']));
static
param
$elementparam
$attributesreturn
string
firstElement
static
Locates 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');
param
$elementreturn
mixed
href
static
Matches the a element with given URL
<?php
use \Codeception\Util\Locator;
$I->see('Log In', Locator::href('/login.php'));
?>
static
param
$urlreturn
string
humanReadableString
static
Transforms strict locator, \Facebook\WebDriver\WebDriverBy into a string represenation
param
$selectorreturn
string
isCSS
static
Checks that provided string is CSS selector
<?php
Locator::isCSS('#user .hello') => true
Locator::isCSS('body') => true
Locator::isCSS('//body/p/user') => false
param
$selectorreturn
bool
isID
static
Checks that string and CSS selector for element by ID
param
$idreturn
bool
isXPath
static
Checks that locator is an XPath
<?php
Locator::isCSS('#user .hello') => false
Locator::isCSS('body') => false
Locator::isCSS('//body/p/user') => true
param
$locatorreturn
bool
lastElement
static
Locates 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');
param
$elementreturn
mixed
option
static
Matches option by text:
<?php
use Codeception\Util\Locator;
$I->seeElement(Locator::option('Male'), '#select-gender');
param
$valuereturn
string
tabIndex
static
Matches 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');
?>
static
param
$indexreturn
string