2015-02-02 2 views
3

Я пытаюсь создать сценарий Behat с веб-интерфейсом, используя Select2.Behat/Mink and Select2 combo

Когда я пытаюсь изменить значение выбора, у меня есть ошибка Behat из-за выбора базы, которая скрыта с помощью Select2.

Но у меня уже есть ошибка с компонентом select2, потому что норка не может взаимодействовать с ней.

Вы уже используете Behat/Mink с Select2? У вас есть советы, которые помогут мне?

+0

Покажите нам свой код. –

ответ

2

я, наконец, написать Behat взаимодействовать с Select2 поле, как пользователь может сделать ,

Вот выдержка из наиболее полного шага:

/** 
* @When /^(?:|I)fill in select2 input "(?P<field>(?:[^"]|\\")*)" with "(?P<value>(?:[^"]|\\")*)" and select "(?P<entry>(?:[^"]|\\")*)"$/ 
*/ 
public function iFillInSelectInputWithAndSelect($field, $value, $entry) 
{ 
    $page = $this->getSession()->getPage(); 

    $inputField = $page->find('css', $field); 
    if (!$inputField) { 
     throw new \Exception('No field found'); 
    } 

    $choice = $inputField->getParent()->find('css', '.select2-selection'); 
    if (!$choice) { 
     throw new \Exception('No select2 choice found'); 
    } 
    $choice->press(); 

    $select2Input = $page->find('css', '.select2-search__field'); 
    if (!$select2Input) { 
     throw new \Exception('No input found'); 
    } 
    $select2Input->setValue($value); 

    $this->getSession()->wait(1000); 

    $chosenResults = $page->findAll('css', '.select2-results li'); 
    foreach ($chosenResults as $result) { 
     if ($result->getText() == $entry) { 
      $result->click(); 
      break; 
     } 
    } 
} 

Я собираюсь открыть Источник Select2 контекстов в течение нескольких дней на Github.

+1

Я открываю контекст select2 на [Github] (https://github.com/novaway/BehatCommonContext). Ветвь 1.x совместима с Behat2 и 2.x совместима с Behat3. –

0

Я застрял с этим, но я прошел через него с информацией, которую я нашел в Filling in hidden inputs with Behat.

Мое решение лишь немного отличается:

/** 
* @Given /^I fill hidden field "([^"]*)" with "([^"]*)"$/ 
*/ 
public function iFillHiddenFieldWith($class, $value){ 
    $this->getSession()->getPage()->find('css', $class)->setValue($value); 
} 

И тогда я использую его следующим образом:

And I fill hidden field "#s2id_edit-my-field input" with "random value". 
Смежные вопросы