如果元素未显示,则重新加载页面 - Codeception

时间:2017-12-20 14:32:44

标签: codeception

所以我试图让代码重新加载我的页面,如果它没有看到一个元素。

if ($I->dontSeeElement('body > div.site > main > header > h1'))
{
    $I->reloadPage();
}

我在_after函数中设置了这个。

但每次我运行测试时,都会给我一个错误。 我的逻辑是:如果它确实看到了那个元素,它应该继续前进。如果没有,则重新加载页面。

1 个答案:

答案 0 :(得分:0)

您可能希望使用以下内容扩展您的验收测试员课程:

public function reloadIfElementNotFound($selector)
{
    try {
        $this->seeElement($selector);
    } catch (\PHPUnit_Framework_ExpectationFailedException $e) {
        $this->reloadPage();
        $this->seeElement($selector);
    }
}

所以,它会尝试“看到”一个元素,如果没有找到,那么将抛出\PHPUnit_Framework_ExpectationFailedException,你将catch然后重新加载页面。此外,请确保在重新加载后该元素可见。但是,如果在重新加载后它仍然不可见,那么异常将再次抛出并打破测试,我猜 - 这将是期望的行为。

在您的测试中,您只需使用:

$I->reloadIfElementNotFound('body > div.site > main > header > h1');