Перебирайте ссылки на странице в Codeception Tests

1

Я пишу некоторые тесты функциональности с помощью 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, и я не уверен, что он представляет страницу, которую он просматривает, как объект для перемещения.

Теги:
testing
codeception

1 ответ

3
Лучший ответ

Вы пытались использовать метод grabMultiple? http://codeception.com/docs/modules/PhpBrowser#grabMultiple

https://github.com/Codeception/Codeception/blob/faa5fb331eb15760bc88f284183f367df5a26a39/src/Codeception/Lib/InnerBrowser.php#L948

Он возвращает список значений одного атрибута, но он должен быть достаточно хорош, если все ваши элементы имеют атрибут id или href.

Если вы действительно хотите получить узлы, реализуйте свой собственный метод.

Скопируйте метод getMultiple в класс Helper\Functional, переименуйте и измените его по своему усмотрению. http://codeception.com/docs/06-ReusingTestCode#Modules-and-Helpers

  • 0
    Спасибо! Пропустил этот метод в документации, они действительно должны что-то там добавить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню