2017-12-20 15 views
1

그래서 요소가 표시되지 않으면 코드 페이지를 다시로드하려고합니다.요소가 표시되지 않는 경우 페이지 다시로드 - 코드화

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

이 항목은 _after 기능에 있습니다.

하지만 테스트를 실행할 때마다 오류가 발생합니다. 나의 논리는 : 만약 그 요소를 보았다면, 그것은 계속 움직여야 만합니다. 그렇지 않으면 페이지를 새로 고침하십시오.

+0

당신은 부울을 반환하는 도우미 함수를 만들어야합니다. 해당 함수에서 $ I-> dontSeeElement()를 사용하여 throw 될 예외를 포착 할 수 있습니다. – sunomad

+0

게다가 _after 함수는 테스트 후에 호출되므로 사용하기에 잘못된 곳인 것처럼 보입니다. – sunomad

+0

어디에서 부르겠습니까? –

답변

0
당신이 뭔가에 동의 테스터 클래스를 확장 할 수 있습니다

:

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

그래서,이 요소 "를 참조하십시오"를 시도 할 것이며, 그 다음 찾을 수없는 것 경우 \PHPUnit_Framework_ExpectationFailedException이 발생 될 catch으로 이동 한 다음 페이지를 다시로드하십시오. 또한 다시로드 한 후에 요소가 표시되는지 확인하십시오. 그러나 다시로드 한 후에도 표시되지 않으면 예외가 다시 throw되어 테스트를 중단합니다. 이는 예상되는 동작입니다. 테스트에서

당신은 단순히 사용하십시오 :

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