我对angular 5应用程序进行了代码测试。使用HTML5漂亮网址 我正在测试两个步骤。
<button id="play">PLAY</button>
第一步非常好。我测试了所有场景。当第一步结束时,浏览器会按预期重定向HTML5重定向到url: /register/ fields: first_name,email,password
when success redirect to:
url: /personal-details/ fields: date_of_birth
问题是,即使它存在,代码也看不到#date_of_birth
为了验证这一点,我简化了执行,并在控制台中运行
/personal-details/
并找到了该领域。它在页面上。
我虽然它与重定向有关,所以我添加了一个特殊的重定向,以使第一个表单出现同样的问题,并且它运行正常。
这是错误:
测试字段第二步
document.getElementById('date_of_birth')
场景步骤:
什么可能出错?
谢谢
答案 0 :(得分:1)
也许Codeception会在页面完全加载之前检查元素是否存在 尝试使用waitForElement而不是seeElement
$I->waitForElement('#date_of_birth', 10);
答案 1 :(得分:0)
我在这篇文章中遇到了类似的问题。因为(在我看来)没有正当理由我收到消息
"断言数组不为空失败。"
使用 $I->canSeeElement() 或 $I->canSeeElementInDom() 时。就我而言,我没有处理异步加载的元素,这些元素是存在的。
这是我的代码的样子:
$I->canSeeElementInDOM('//*[@id="MyId"]//input[@name="myCheckbox"][not(@checked)]');
使用以下语法修复了问题:
$I->canSeeElementInDOM('//*[@id="MyId"]//input[@name="myCheckbox" and not(@checked)]');
希望这对某人也有帮助。