Перебирайте ссылки на странице в Codeception Tests
Я пишу некоторые функциональные тесты с использованием Codeception и веб-драйвера 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, и я не уверен, представляет ли она страницу, которую он просматривает, как объект для обхода.
1 ответ
Вы пытались использовать метод grabMultiple? http://codeception.com/docs/modules/PhpBrowser
Он возвращает список значений одного атрибута, но он должен быть достаточно хорошим, если все ваши элементы имеют атрибут id или href.
Если вы действительно хотите получить узлы, реализуйте свой собственный метод.
Скопируйте метод getMultiple в класс Helper\Functional, переименуйте и измените его по своему желанию. http://codeception.com/docs/06-ReusingTestCode