Capybara не может найти поле выбора для Semantic-ui

Я использую capybara с capybara-webkit и Semantic-ui, но кажется, что выпадающие списки не работают из коробки, потому что элемент <select> скрытый:

# feature_spec.rb
select 'option1', from: 'Options'

$ rspec feature_spec.rb

Capybara::ElementNotFound:
  Unable to find select box "Options"

У вас есть рабочие решения для этого?


person boblin    schedule 21.01.2016    source источник


Ответы (3)


Я создал этот помощник:

# for Semantic-ui dropdown
def select_from_dropdown(item_text, options)
  # find dropdown selector
  dropdown = find_field(options[:from], visible: false).first(:xpath,".//..")
  # click on dropdown
  dropdown.click
  # click on menu item
  dropdown.find(".menu .item", :text => item_text).click
end

# in spec
select_from_dropdown 'option1', from: 'Options'

Я надеюсь, что это помогает :-)

person boblin    schedule 21.01.2016

Вы также можете сделать это:

execute_script('$("#Options").dropdown("set selected", "option1");')

execute_script позволяет вам запускать скрипты в ваших тестах. Он использует метод semantic-ui для выбора нужного параметра из раскрывающегося списка.

person Pete Tyldesley    schedule 08.03.2017
comment
Добро пожаловать в StackOverflow! Когда вы публикуете какой-либо код, вы должны описать его так, чтобы не только тот, кто задал вопрос, но и все сообщество могли легко понять ваш код. - person BusyProgrammer; 09.03.2017
comment
Спасибо! Я думал, что этот код говорит сам за себя! Во всяком случае, я отредактировал его на случай, если он понадобится людям. - person Pete Tyldesley; 09.03.2017

После двух дней поиска и чтения эта статья оказалась одной из немногих полезных. Надеюсь, это может помочь кому-то еще!

Я создал несколько таких методов, извините за название. Я изменил его.

def some_dropdown(id, text)
  dropdown = find(id).click
  dropdown.first('option', text: text).select_option
end

def select_form
  within 'content#id' do
    some_dropdown('#id', text)

    click_link_or_button 'Submit'
  end
end

Я также сослался на это. Также попробуйте ждать, спать и видеть: false

person jasmineq    schedule 09.01.2019