Комбинация Behat/Норки и Select2


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

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

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

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

Author: Jérémy, 2015-02-02

2 answers

Наконец-то я написал инструкцию для взаимодействия с полем 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.

 2
Author: Jérémy, 2015-04-10 13:49:51

Я застрял с этим, но я прошел через это с информацией, которую я нашел в , Заполнив скрытые входы с помощью 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
Author: Potney Switters, 2017-05-23 12:14:54