Behat / Mink не находит поля по id - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь заполнить поле.Почему Behat не находит поле по идентификатору?

Поле ввода:

   <input class="js-text-full text-full form-text required" data-drupal-selector="edit-field-article-nr-supplier-0-value" type="text" id="edit-field-article-nr-supplier-0-value" name="field_article_nr_supplier[0][value]" value="" size="60" maxlength="255" placeholder="" required="required" aria-required="true">

Код PHP:

public function fillField($field, $value)
{
    $field = $this->fixStepArgument($field);
    $value = $this->fixStepArgument($value);
    $this->getSession()->getPage()->fillField($field, $value);
}

Behat:

When I fill in "edit-field-article-nr-supplier-0-value" with "12"

Он говорит, что не находит поле по id:

 When I fill in "edit-field-article-nr-supplier-0-value" with "12"   # Drupal\DrupalExtension\Context\MinkContext::fillField()
  Form field with id|name|label|value|placeholder "edit-field-article-nr-supplier-0-value" not found. (Behat\Mink\Exception\ElementNotFoundException)

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Метод Минка fillField() использует findField() для поиска поля - и findField() использует name в качестве селектора, а не id.Вот почему ваш первоначальный подход не сработал.Подробнее см. source класса Минка TraversableElement.

0 голосов
/ 31 января 2019

Я нашел работу вокруг.Я заполнил входные данные, заполненные javascript

  /**
   * @When I fill in :value on the field :field with javascript
   */
  public function findAllInputFields($value, $field){
      $javascript = "window.onload = function () {var e = document.getElementById('$field').value='$value';}";
      $this->getSession()->executeScript($javascript);
  }

Важно, не забудьте аннотацию @javascript.

@javascript
Scenario: Fill out field
    When I fill in 12 on the field "edit-field-article-nr-supplier-0-value" with javascript

Если у кого-то есть лучшее решение, поделитесь, я хотел бызнаю.

...