Комбо Behat / Mink и Select2

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

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

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

Вы уже использовали Behat / Mink с Select2? Есть ли у вас советы, чтобы помочь мне?

3

Решение

Наконец, я пишу 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;
}
}
}

Через несколько дней я собираюсь открыть контексты Open Source Select2 на Github.

2

Другие решения

Я застрял с этим, но я прошел через это с информацией, которую я нашел в Заполнение скрытых вводов с помощью 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".
0

По вопросам рекламы [email protected]