selectOption с динамическим идентификатором и именем

Я использую Codeception для тестирования расширенного настраиваемого поля в приложении Wordpress.

У меня проблемы с поиском окна выбора html. Это связано с тем, что у него никогда не бывает статического имени или идентификатора, например id="acf-field-field_58079c4650b04_type" name="fields[field_58079c4650b04]. Цифры меняются каждый раз, что и ожидается.

Использование кодов

$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 для поиска поля выбора с динамическим идентификатором и именем.


person DMH    schedule 19.10.2016    source источник


Ответы (1)


Xpath кажется правильным, он должен найти его, если он содержится в dom и виден.

Он заполняется из запроса ajax?

Тогда, вероятно, выбор еще не отображается или не заполняется.

Вы можете использовать что-то подобное, чтобы дождаться завершения запросов ajax

  $I->waitForJs('return jQuery.active == 0', 10);
person Kiriakos Diamantis    schedule 20.10.2016
comment
Он запускается нажатием кнопки, но я вижу, что он отображается, поскольку codeception создает скриншот при неудачных тестах, и он виден :/ - person DMH; 20.10.2016