Intereting Posts
PHP APC: Что происходит, когда кеш APC заполнен? Codeigniter, создающий новый сеанс при каждой загрузке страницы php combobox & button должна скрываться после обновления в mysql db и показывать сообщение об успешном завершении вместо поля combobox & button. $ _FILES пуст после отправки формы Как взаимодействовать с XBox API с помощью PHP и cURL Удалить целое слово, если слово содержит определенную строку Ошибка при печати Gzzle Curl 60 SSL не может получить локальный эмитент Как преобразовать все изображения в jpg? использование веб-службы php в Xamarin PCL Получите фактическое сообщение электронной почты, которое только что написал человек, за исключением любого цитируемого текста Измените размер по умолчанию Vimeo / Youtube в WordPress Как проверить доменное имя в PHP? В чем разница между DOMXPath :: evaluation и DOMXPath :: query? Повторное перенаправление веб-сайта в определенную папку и https fopen () не создает файл на linux

Прокрутка ссылок на странице в тестах Codeception

Я пишу некоторые тесты функциональности с помощью 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

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