In the latest Codeception 1.1.4 new
Locator class was introduced. Basically it should simplify your life in writing complex XPath or CSS locators. Right now it has minimal, yet useful functionality.
Locator can combine two locators using
<?php use \Codeception\Util\Locator; $I->see('Title', Locator::combine('h1','h2','h3')); ?>
This will search for
Title text in either
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'), 'qwerty'); ?>
As a result the Locator will produce a mixed XPath value that will be used in fillField action.
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
<?php use \Codeception\Util\Locator; $I->fillField(Locator::tabIndex(1), 'davert'); $I->fillField(Locator::tabIndex(2) , 'qwerty'); $I->click('Login'); ?>
Does the page contain link wo specified URL? Check that easily with
href method of
<?php use \Codeception\Util\Locator; $I->see('Log In', Locator::href('/login.php')); ?>
And that's all folks for today. We are sure the locator class will evolve to simplify writing complex locators. If you have ideas what methods should be added, post them here. Or, which is better, patch this class and send Pull Request to Github.
Write and execute a test for an existing app in less then a 5 mins! No additional tools required.
Codeception was started in November 2011, and released the first stable version 1.0 in January 2012. Based on Symfony2 Components, PHPUnit, Mink. Codeception is a mature and stable project, well-tested and documented. It's open-source and MIT licensed.
Join #codeception on FreeNode IRC.