Capybara: find (element) с помощью селектора для назначения имени сложного атрибута

Использование огурца и капибара для проверки приложения рельсов. Предполагая, что я не могу изменить разметку, могу ли я использовать capybara для выбора следующего выбора на странице, полной похожих td и select s?

<td>
  <select name="attributes[ruby][category]">
    <option value="2" selected="selected">Languages</option>
    <option value="3">Communication</option>
  </select>
</td>

Это кажется неудачным (я предполагаю из-за вложенных "[" и "]" ).

find("select[name=attributes[ruby][category]]")

Эскапажи тоже не работают. Мысли?

Ответ 1

Вы можете попробовать find('select', :name => 'attributes[ruby][category]') или find_field('attributes[ruby][category]').

Ответ 2

Я думаю, вам нужно указать значение атрибута:

find("select[name='attributes[ruby][category]']")

но марочное предложение использования find_field - более чистый подход.

Ответ 3

В более общем плане вы можете использовать XPath

find(:xpath, "//select[@name='attributes[ruby][category]'")

Этот подход имеет то преимущество, что его можно использовать для любого атрибута.