#php #codeception
#php #codeception
Вопрос:
Я использую Codeception для тестирования расширенного пользовательского поля в приложении WordPress.
У меня возникли проблемы с поиском окна выбора html. Это потому, что у него никогда не бывает статического имени или идентификатора, например id="acf-field-field_58079c4650b04_type" name="fields[field_58079c4650b04]
. Цифры меняются каждый раз, что и ожидалось.
Использование codeceptions
$I->selectOption("contains(@id, '_type')]", 'number');
Я не смог заставить его найти его, и он выдает эту ошибку.
1) CreateNewFieldCest: Create a new advanced custom field
Test tests/acceptance/CreateNewFieldCest.php:CreateNewField
Step Select option "//input[@type='select' and contains(@id, '_type')]","number"
Fail Field by name, label, CSS or XPath element with '//input[@type='select' and contains(@id, '_type')]' was not found.
Scenario Steps:
6. $I->selectOption("//input[@type='select' and contains(@id, '...","number")
5. $I->wait(2)
4. $I->fillField("//input[@type='text' and @class='label' a...","test field")
3. $I->click(" Add Field")
2. $I->fillField("#title","test field")
1. $I->amOnPage("/wp/wp-admin/post-new.php?post_type=acf")
FAILURES!
Tests: 1, Assertions: 0, Failures: 1.
Script codecept handling the __exec_command event returned with error code 1
Может ли кто-нибудь порекомендовать подход, позволяющий использовать selectOption
для поиска поля выбора с динамическим идентификатором и именем.
Ответ №1:
Xpath кажется правильным, он должен быть в состоянии найти его, если он содержится в dom и виден.
Заполняется ли он из запроса ajax?
Тогда, вероятно, выбор еще не отрисован или не заполнен.
Вы можете использовать что-то вроде этого, чтобы дождаться завершения запросов ajax
$I->waitForJs('return jQuery.active == 0', 10);
Комментарии:
1. Он запускается при нажатии кнопки, но я вижу, что он отображается, поскольку codeception генерирует скриншот при неудачных тестах, и это видно :/