Как да намерите поле на 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