2014-11-05 2 views
0

숨겨진 필드가있는 양식이 있습니다. 사용자가 체크 박스를 선택하면 숨겨진 양식 필드 중 일부가 jquery 함수 slideToggle()을 사용하여 표시됩니다. 매우 직선적 인 코드이므로 예제 here을 볼 수 있습니다.동적으로 '표시'로 설정된 채우기 양식 필드

제 문제는 Behat은 체크 박스가 사용자에게 표시 한 후에도 양식 필드가 보이지 않고 상호 작용할 수 없다고 생각합니다. 나는 양식을 작성하기 전에 실행을 완료 체크 박스를 클릭 리스너에서 기다리고에 대해 내가 가서 어떻게

When I check "form_checkbox" 
And I fill in "form_field" with "some data" 

:

내가 내 기능에서 테스트하기 위해 노력하고있어 시나리오 또는 더 나은 접근법이 있습니까?

+0

몇 가지 코드를 알려주세요. – HarrieDakpan

답변

1

두 가지 사이에 AfterStep 단계를 넣으면 jQuery가 애니메이션을 수행 할 수 있습니다. 당신의 FeatureContext이 같은 뭔가 도움이 될 것입니다

/** 
* @AfterStep @javascript 
*/ 
public function afterStep($event) 
{ 
    $text = $event->getStep()->getText(); 
    if (preg_match('/(follow|press|click|submit|check)/i', $text)) { 
     $this->jqueryWait(); 
    } 
} 

protected function jqueryWait($duration = 4000) 
{ 
     $this->getSession()->wait($duration, '(0 === jQuery.active && 0 === jQuery(':animated').length)'); 
} 

이 기본적으로 그 텍스트가 포함 된 모든 단계 "를 눌러", "클릭" "제출"또는 "확인"을 "에 따라"후, 실행이 기다릴 것을 의미합니다 $duration 밀리 초 또는 자바 스크립트 어설 션이 true을 반환 할 때까지 (즉, jQuery가 아무 것도 애니메이트하지 않음).

관련 문제