所以我试图让代码重新加载我的页面,如果它没有看到一个元素。
if ($I->dontSeeElement('body > div.site > main > header > h1'))
{
$I->reloadPage();
}
我在_after
函数中设置了这个。
但每次我运行测试时,都会给我一个错误。 我的逻辑是:如果它确实看到了那个元素,它应该继续前进。如果没有,则重新加载页面。
答案 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');