具有动态ID& amp;的selectOption名称

时间:2016-10-19 16:57:15

标签: php codeception

我正在使用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和名称的选择框的方法。

1 个答案:

答案 0 :(得分:0)

Xpath似乎是正确的,它应该能够找到它,如果它包含在dom中并且它是可见的。

是否从ajax请求填充?

然后可能还没有呈现或填充选择。

您可以使用类似的东西等待ajax请求完成

  $I->waitForJs('return jQuery.active == 0', 10);