2013-06-03 2 views
4

У меня есть следующие элементы, определенные в пределах страницы SitePrism:Как выбрать элемент из раскрывающегося списка с помощью сайта Prism?

element :type, "select[id='type']" 
elements :type_options, "select[id='type'] option" 

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

@app.new.type_options.each {|name| name.click if name.text.upcase == value.upcase} 

Мне не очень нравится эта реализация, но она отлично работает при запуске Capybara в chrome, но не удается, когда я запускаю ее без головы, поэтому я считаю, что должен быть альтернативный/лучший способ выбора выпадающих элементов.

В идеале я хотел бы сделать что-то вроде @app.new_r.r_type.select 'value', но я не могу понять, как это сделать в SitePrism.

Итак, мой первый вопрос: может ли кто-нибудь порекомендовать элегантный способ выбрать элемент из раскрывающегося списка по значению с сайта SitePrism?

И мой второй вопрос: любая идея, почему приведенный выше код не работает при запуске безголового?

+1

Что вы получаете, когда пытаетесь «@app.new_r.r_type.select» значение? –

+0

Я получаю Не удалось найти ошибку "event" (Capybara :: ElementNotFound). – drooks

+0

Исправление - я уже пробовал это раньше, но я пытался сопоставить «значение» с «значением» и получал ошибку «Невозможно найти вариант« событие »(Capybara :: ElementNotFound). После фиксации моих помощников это работает. Это также решило мою вторую проблему. Спасибо Nat! – drooks

ответ

10

У меня была аналогичная проблема, где я не мог найти ее, чтобы выбрать вариант, который я хотел. Я столкнулся с этим вопросом, и это заставило меня понять, что проблема заключается в том, что вы должны отправить текст, а не значение, в select().

Например, если у меня есть HTML как

<select id="things"> 
    <option value="thing1">The First Thing</option> 
    <option value="thing2">The Second Thing</option> 
    <option value="thing3">The Third Thing</option> 
</select> 

И в моем классе SitePrism :: Страница у меня есть:

element :things, "select[id='things']" 

Я думал, что мне нужно сделать:

@my_page.things.select("thing1") 

Это не работает. Вместо этого вы должны сделать:

@my_page.things.select("The First Thing") 

Я знаю, что это немного отличается, чем пытаться выбрать на основе значения вы получите от SitePrism, как было первоначально просили. Но я думал, что это различие о том, что передать select(), может помочь кому-то.