HumHub Documentation (unofficial)

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
static
throws
Exception
Return values
string

contains()

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
string

elementAt()

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
static
Return values
string

firstElement()

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
static
Return values
string

humanReadableString()

Transforms strict locator, \Facebook\WebDriver\WebDriverBy into a string represenation

public static humanReadableString(mixed $selector) : string
Parameters
$selector : mixed
Return values
string

isClass()

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
bool

isCSS()

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
bool

isID()

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
bool

isPrecise()

public static isPrecise(mixed $locator) : bool
Parameters
$locator : mixed
Return values
bool

isXPath()

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
bool

lastElement()

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
string

tabIndex()

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
static
Return values
string

toXPath()

protected static toXPath(mixed $selector) : mixed
Parameters
$selector : mixed

        
On this page

Search results