Search

Codeception\Util\Locator

Set of useful functions for using CSS and XPath locators. Please check them before writing complex functional or acceptance tests.

combine()

public static combine($selector1, $selector2)

  • static
  • param string $selector1
  • param string $selector2
  • throws Exception
  • return string

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.

See source

contains()

public static contains($element, $text)

  • param string $element
  • param string $text
  • return string

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');

See source

elementAt()

public static elementAt($element, $position)

  • param string $element CSS or XPath locator
  • param int|string $position xPath index
  • return string

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

See source

find()

public static find($element, array $attributes)

  • static
  • param string $element
  • param array $attributes
  • return string

Finds element by it’s attribute(s)

<?php
use \Codeception\Util\Locator;

$I->seeElement(Locator::find('img', ['title' => 'diagram']));

See source

firstElement()

public static firstElement($element)

  • param string $element
  • return string

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');

See source

href()

public static href($url)

  • static
  • param string $url
  • return string

Matches the a element with given URL

<?php
use \Codeception\Util\Locator;

$I->see('Log In', Locator::href('/login.php'));

See source

humanReadableString()

public static humanReadableString($selector)

  • param \Facebook\WebDriver\WebDriverBy|array|string $selector
  • return string

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

See source

isCSS()

public static isCSS($selector)

  • param string $selector
  • return bool

Checks that provided string is CSS selector

<?php
Locator::isCSS('#user .hello') => true
Locator::isCSS('body') => true
Locator::isCSS('//body/p/user') => false

See source

isClass()

public static isClass($class)

  • param string $class
  • return bool

Checks that a string is valid CSS class

<?php
Locator::isClass('.hello') => true
Locator::isClass('body') => false
Locator::isClass('//body/p/user') => false

See source

isID()

public static isID($id)

  • param string $id
  • return bool

Checks that a string is valid CSS ID

<?php
Locator::isID('#user') => true
Locator::isID('body') => false
Locator::isID('//body/p/user') => false

See source

isPrecise()

public static isPrecise($locator)

  • param \Facebook\WebDriver\WebDriverBy|array|string $locator
  • return bool

See source

isXPath()

public static isXPath($locator)

  • param string $locator
  • return bool

Checks that locator is an XPath

<?php
Locator::isXPath('#user .hello') => false
Locator::isXPath('body') => false
Locator::isXPath('//body/p/user') => true

See source

lastElement()

public static lastElement($element)

  • param string $element
  • return string

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');

See source

option()

public static option($value)

  • param string $value
  • return string

Matches option by text:

<?php
use Codeception\Util\Locator;

$I->seeElement(Locator::option('Male'), '#select-gender');

See source

tabIndex()

public static tabIndex($index)

  • static
  • param int $index
  • return string

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');

See source

 

Reference is taken from the source code. Help us to improve documentation. Edit module reference
Don't know how to write tests on your own? We will build or improve them for you. Request a quote for official enterprise support or trainings