Я пишу некоторые тесты функциональности с помощью Codeception и webdriver PHPBrowser.
Codeception использует определенные ссылки в CSS или XPath для проверки элементов на странице.
Но я хочу, чтобы иметь возможность прокручивать все ссылки в моем меню, нажимать на него и запускать тест, чтобы увидеть, работает ли ссылка.
то есть. если мое меню выглядит так:
<ul id='nav'> <li><a>Link1</a></li> <li><a>Link2</a></li> <li><a>Link3</a></li> <li><a>Link4</a></li> <li><a>Link5</a></li> </ul>
Я хочу иметь возможность прокручивать ссылки и передавать свой индекс:
$links = somefunctiontogetalllinks(); for ($x = 0; $x <= count($links); $x++) { codeceptionTest($x); }
И тогда тест может ссылаться на ссылку с помощью псевдоселекторов CSS:
public function codeceptionTest($index) { $i->click('#nav > li:nth-child(' . $index . ') > a'); $I->see('Page Content'); }
Я не могу найти какой-либо способ получить набор элементов с помощью методов PHPbrowser или Codeception, и я не уверен, что он представляет страницу, которую он просматривает, как объект для перемещения.
Вы пытались использовать метод grabMultiple? http://codeception.com/docs/modules/PhpBrowser#grabMultiple
Он возвращает список значений одного атрибута, но он должен быть достаточно хорош, если все ваши элементы имеют атрибут id или href.
Если вы действительно хотите получить узлы, реализуйте свой собственный метод.
Скопируйте метод getMultiple в класс Helper \ Functional, переименуйте и измените его по своему усмотрению. http://codeception.com/docs/06-ReusingTestCode#Modules-and-Helpers