codeception看不到字段但浏览器确实(Chrome驱动程序)

时间:2018-02-19 06:42:24

标签: codeception

我对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') 

场景步骤:

什么可能出错?
谢谢

2 个答案:

答案 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)]');

希望这对某人也有帮助。