2016-02-02 4 views
2

У меня есть выберите выпадающий списокВыбор строки с водосвинки

<%= f.select :image_size_id, options_for_select(@image_sizes.collect{ |i| [i.dimension, { id: i.dimension} ]}), { prompt: "Please select a Print Size" }, id: 'image_size_select' %> 

который возвращает это в HTML

<select id="image_size_select" name="cart_item[image_size_id]"> 
    <option value="">Please select a Print Size</option> 
    <option id="10x8" value="13">10x8 £14.0</option> 
    <option id="A4" value="14">A4 £33.0</option> 
    <option id="A3" value="15">A3 £36.0</option> 
    <option id="A2" value="16">A2 £47.0</option> 
</select> 

На данный момент, чтобы выбрать вариант в пределах моих тестов я могу использовать, например

find('#image_size_select').find("option[id='A2']").select_option 
find('#image_size_select').find("option[value='14']").select_option 

Что я хочу сделать, это выбрать подсказку, чтобы я мог проверить свою проверку, могу ли я установить и идентификатор подскажите или выберите по тексту? Я попытался

find('#image_size_select').find("option[text='find('#image_size_select').find("option[id='A2']").select_option']").select_option 

Но это не работает, и не

find('#image_size_select').find(:xpath, 'option[1]').select_option 

Любая помощь приветствуется

Благодарности

+0

Вы пытались использовать 'find (" option [value = '13 '] "). Click'? – fabersky

+0

@ faberskyThat не тот, который я хочу щелкнуть, хотя .... Я хочу выбрать подсказку – Richlewis

+0

Можете ли вы попробовать 'page.select?", Из: 'image_size_select''? – eugen

ответ

2

Капибара #select выбирает опцию в тексте, а не значение, элемент опциона. При переходе с: от варианта его реализации, как find(:select, '<select id, name, or associated label text (the :from option)>').find(:option, '<text of option element>').select_option, что означает правильный вызов, чтобы выбрать первый вариант в указанный выбор является

page.select "Please select a Print Size", from: 'image_size_select' 

, чтобы выбрать следующий вариант

page.select "10x8 £14.0", from: 'image_size_select' 

Благодаря капибары умолчанию частичная строка, соответствующая

page.select "10x8", from: 'image_size_select' 

также выбрать опцию 10х8 до тех пор, как «10x8» является частичное совпадение только один из вариантов в выбранном

1

page.select "", from: 'image_size_select' должен работать. select позволяет вам выбирать параметры из раскрывающегося списка выбора по значению (которое в данном случае это пустая строка), а раскрывающийся список выбора можно найти на странице по имени, идентификатору или ярлыку.

В документации методы заключается в http://www.rubydoc.info/github/jnicklas/capybara/Capybara%2FNode%2FActions%3Aselect

+0

Еще раз спасибо, любые идеи о том, как получить первый вариант с ''? – Richlewis

+0

Как насчет 'find ('# image_size_select'). Find (" option [value = ''] ")' then? – eugen

+0

@eugen Ваше описание того, что #select соответствует, неверно, см. Мой ответ –

Смежные вопросы