2014-11-05 69 views
0

我有一個帶有隱藏字段的表單。如果用戶選擇了一個複選框,那麼使用jquery函數slideToggle()顯示一些隱藏的表單域。這是非常直接的代碼,您可以查看示例hereBehat填充表格字段被動態設置爲'可見'

我的問題是,在複選框向用戶顯示它們之後,Behat仍然認爲表單域是不可見和不可交互的。

這是我想在我的功能測試場景:

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

如何去等待上點擊偵聽器複選框,以執行之前,我試圖填寫表格還是有更好的方法?

+0

請給我們一些代碼。 – HarrieDakpan 2014-11-05 17:37:36

回答

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毫秒,要麼直到javascript斷言返回true(即jQuery不會動畫任何東西)。