我正在使用Codeception在wordpress应用程序中测试高级自定义字段。
我在找到html选择框时遇到问题。这是因为它永远不会有静态名称或ID,例如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
查找具有动态ID和名称的选择框的方法。
答案 0 :(得分:0)
Xpath似乎是正确的,它应该能够找到它,如果它包含在dom中并且它是可见的。
是否从ajax请求填充?
然后可能还没有呈现或填充选择。
您可以使用类似的东西等待ajax请求完成
$I->waitForJs('return jQuery.active == 0', 10);