capybara: find (элемент), использующий селектор для определения имени сложного атрибута - PullRequest
11 голосов
/ 06 октября 2011

Использование огурца и капибары для тестирования приложения рельсов.Предполагая, что я не могу изменить разметку, могу ли я использовать капибару, чтобы выбрать следующее выделение на странице, полной похожих td s и 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]]")

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

Ответы [ 3 ]

19 голосов
/ 06 октября 2011

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

4 голосов
/ 06 октября 2011

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

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

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

1 голос
/ 23 ноября 2012

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

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

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

...