Locator
in package
Set of useful functions for using CSS and XPath locators.
Please check them before writing complex functional or acceptance tests.
Table of Contents
Methods
- combine() : string
- Applies OR operator to any number of CSS or XPath selectors.
- contains() : string
- Locates an element containing a text inside.
- elementAt() : mixed
- Locates element at position.
- find() : string
- Finds element by it's attribute(s)
- firstElement() : mixed
- Locates first element of group elements.
- href() : string
- Matches the *a* element with given URL
- humanReadableString() : string
- Transforms strict locator, \Facebook\WebDriver\WebDriverBy into a string represenation
- isClass() : bool
- Checks that a string is valid CSS class
- isCSS() : bool
- Checks that provided string is CSS selector
- isID() : bool
- Checks that a string is valid CSS ID
- isPrecise() : bool
- isXPath() : bool
- Checks that locator is an XPath
- lastElement() : mixed
- Locates last element of group elements.
- option() : string
- Matches option by text:
- tabIndex() : string
- Matches the element with given tab index
- toXPath() : mixed
Methods
combine()
Applies OR operator to any number of CSS or XPath selectors.
public
static combine(mixed $selector1, mixed $selector2) : string
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.
Parameters
- $selector1 : mixed
- $selector2 : mixed
Tags
Return values
stringcontains()
Locates an element containing a text inside.
public
static contains(mixed $element, mixed $text) : string
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');
Parameters
- $element : mixed
- $text : mixed
Return values
stringelementAt()
Locates element at position.
public
static elementAt(string $element, int $position) : mixed
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
Parameters
- $element : string
-
CSS or XPath locator
- $position : int
-
xpath index
find()
Finds element by it's attribute(s)
public
static find(mixed $element, mixed $attributes) : string
<?php
use \Codeception\Util\Locator;
$I->seeElement(Locator::find('img', ['title' => 'diagram']));
Parameters
- $element : mixed
- $attributes : mixed
Tags
Return values
stringfirstElement()
Locates first element of group elements.
public
static firstElement(mixed $element) : mixed
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');
Parameters
- $element : mixed
href()
Matches the *a* element with given URL
public
static href(mixed $url) : string
<?php
use \Codeception\Util\Locator;
$I->see('Log In', Locator::href('/login.php'));
?>
Parameters
- $url : mixed
Tags
Return values
stringhumanReadableString()
Transforms strict locator, \Facebook\WebDriver\WebDriverBy into a string represenation
public
static humanReadableString(mixed $selector) : string
Parameters
- $selector : mixed
Return values
stringisClass()
Checks that a string is valid CSS class
public
static isClass(mixed $class) : bool
<?php
Locator::isClass('.hello') => true
Locator::isClass('body') => false
Locator::isClass('//body/p/user') => false
Parameters
- $class : mixed
Return values
boolisCSS()
Checks that provided string is CSS selector
public
static isCSS(mixed $selector) : bool
<?php
Locator::isCSS('#user .hello') => true
Locator::isCSS('body') => true
Locator::isCSS('//body/p/user') => false
Parameters
- $selector : mixed
Return values
boolisID()
Checks that a string is valid CSS ID
public
static isID(mixed $id) : bool
<?php
Locator::isID('#user') => true
Locator::isID('body') => false
Locator::isID('//body/p/user') => false
Parameters
- $id : mixed
Return values
boolisPrecise()
public
static isPrecise(mixed $locator) : bool
Parameters
- $locator : mixed
Return values
boolisXPath()
Checks that locator is an XPath
public
static isXPath(mixed $locator) : bool
<?php
Locator::isXPath('#user .hello') => false
Locator::isXPath('body') => false
Locator::isXPath('//body/p/user') => true
Parameters
- $locator : mixed
Return values
boollastElement()
Locates last element of group elements.
public
static lastElement(mixed $element) : mixed
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');
Parameters
- $element : mixed
option()
Matches option by text:
public
static option(mixed $value) : string
<?php
use Codeception\Util\Locator;
$I->seeElement(Locator::option('Male'), '#select-gender');
Parameters
- $value : mixed
Return values
stringtabIndex()
Matches the element with given tab index
public
static tabIndex(mixed $index) : string
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');
?>
Parameters
- $index : mixed
Tags
Return values
stringtoXPath()
protected
static toXPath(mixed $selector) : mixed
Parameters
- $selector : mixed