Как найти поле Symfony 2 в Behat/Mink

У меня есть следующее поле ввода, сгенерированное symfony:

<input type="text" id="my_project_localebundle_citytype_name" 
name="my_project_localebundle_citytype[name]" required="required" 
maxlength="45" class="text">

И я пишу свой сценарий так:

  @javascript
  Scenario: Add a city
    Given I follow "Locales"
    And I follow "Add city"
    Then I fill in "name" with "Testing 1 2 3"
    ...

Однако поле не может быть найдено

 Form field with id|name|label|value "name" not found.

Я знаю, что мог бы указать свой полный идентификатор или имя, но это слишком долго, и я хочу сохранить его. Есть ли способ проще заполнить его в моем сценарии без редактирования моего ввода?


person dextervip    schedule 15.08.2013    source источник
comment
У вашего поля нет метки?   -  person Pierre    schedule 16.08.2013
comment
@Shady Нет, у меня просто заголовок h3   -  person dextervip    schedule 17.08.2013


Ответы (1)


Что я понял с корнишонами, так это то, что они показывают, что не так с нашим дизайном и UX. И если мы не можем сказать программе, какое поле заполнять, как он может это сделать?

Также основной целью вашего сценария является не заполнение формы, а добавление города. Таким образом, вы должны изменить Then на And в строке Then I fill in "name" with "Testing 1 2 3".

С другой стороны, вы можете просто добавить конкретный метод проверки и сохранить удобочитаемую функцию, например:

And I fill the city's creation form field with "Testing 1 2 3"

Тогда в вашем контексте:

/**
 * @Given /^I fill the city's creation form field with "([^"]*)"$/
 */
public function fillCitysCreationForm($arg1)
{
    $this->fillField('my_project_localebundle_citytype_name', $arg1);
}

PS: я не тестировал предыдущий код, возможно, вам придется его улучшить.

person Community    schedule 20.08.2013