codeception 看不到字段,但浏览器可以看到(Chrome 驱动程序)
codeception do not see field but the browser does (Chrome Driver)
我对 angular 5 应用程序进行了解码测试。 HTML5 漂亮 url.
我正在测试 2 个步骤的表格。
url: /register/ fields: first_name,email,password
when success redirect to:
url: /personal-details/ fields: date_of_birth
第一步非常顺利。我测试了所有场景。当第一步结束时,浏览器按预期重定向 HTML5 重定向到 /personal-details/
。
问题是 codeception 看不到 #date_of_birth,即使它存在。
为了验证这一点,我暂停了执行并在控制台中 运行
document.getElementById('date_of_birth')
并且找到了该字段。它在页面上。
我觉得跟重定向有关,所以我加了一个特殊的重定向,让第一个表单也有同样的问题,而且运行正常。
这是错误:
测试字段第二步
Test tests\acceptance\FirstCest.php:testFieldsSecondStep
Step See element "#date_of_birth"
Fail Failed asserting that an array is not empty.
场景步骤:
可能会出什么问题?
谢谢
也许 Codeception 在页面完全加载之前检查元素是否存在。
尝试使用 waitForElement 而不是 seeElement
$I->waitForElement('#date_of_birth', 10);
我遇到了这个 post 类似的问题。因为(在我看来)没有正当理由我收到了消息
"断言数组不为空失败。"
当使用 $I->canSeeElement() 或 $I->canSeeElementInDom() 时。就我而言,我没有处理异步加载的元素,这些元素存在。
我的代码是这样的:
$I->canSeeElementInDOM('//*[@id="MyId"]//input[@name="myCheckbox"][not(@checked)]');
使用以下语法解决了问题:
$I->canSeeElementInDOM('//*[@id="MyId"]//input[@name="myCheckbox" and not(@checked)]');
希望这对某人也有帮助。
我对 angular 5 应用程序进行了解码测试。 HTML5 漂亮 url.
我正在测试 2 个步骤的表格。
url: /register/ fields: first_name,email,password
when success redirect to:
url: /personal-details/ fields: date_of_birth
第一步非常顺利。我测试了所有场景。当第一步结束时,浏览器按预期重定向 HTML5 重定向到 /personal-details/
。
问题是 codeception 看不到 #date_of_birth,即使它存在。
为了验证这一点,我暂停了执行并在控制台中 运行
document.getElementById('date_of_birth')
并且找到了该字段。它在页面上。
我觉得跟重定向有关,所以我加了一个特殊的重定向,让第一个表单也有同样的问题,而且运行正常。
这是错误:
测试字段第二步
Test tests\acceptance\FirstCest.php:testFieldsSecondStep
Step See element "#date_of_birth"
Fail Failed asserting that an array is not empty.
场景步骤:
可能会出什么问题?
谢谢
也许 Codeception 在页面完全加载之前检查元素是否存在。
尝试使用 waitForElement 而不是 seeElement
$I->waitForElement('#date_of_birth', 10);
我遇到了这个 post 类似的问题。因为(在我看来)没有正当理由我收到了消息
"断言数组不为空失败。"
当使用 $I->canSeeElement() 或 $I->canSeeElementInDom() 时。就我而言,我没有处理异步加载的元素,这些元素存在。
我的代码是这样的:
$I->canSeeElementInDOM('//*[@id="MyId"]//input[@name="myCheckbox"][not(@checked)]');
使用以下语法解决了问题:
$I->canSeeElementInDOM('//*[@id="MyId"]//input[@name="myCheckbox" and not(@checked)]');
希望这对某人也有帮助。