получение неопределенного метода `click_button 'для nil: NilClass (NoMethodError) - PullRequest
0 голосов
/ 30 января 2020

Для выбора выпадающего списка с использованием капибары: получение неопределенного метода

click_button' for nil:NilClass (NoMethodError) ./features/pages/cm_dash_board.rb:187:in choose_role './features/pages/cm_dash_board.rb:147:in set_role' ./features/step_definitions/cm_dash_board_steps.rb:58:in / ^

Method:
  def choose_role(role_name)
    click_button CHOOSE_ROLE
    find(ROLEDROPDOWN).all('li').select{|role| role.text == role_name}.first.click_button 
  end 
Feature file:And(/^I assign "([^"]*)" role to the "([^"]*)" user$/) do |email, role_name|
  @sw.cm_dash_board.set_role(email,role_name)
end

1 Ответ

0 голосов
/ 30 января 2020

Эта ошибка говорит о том, что find(ROLEDROPDOWN).all('li').select{|role| role.text == role_name} не соответствует ни одному элементу. Первый find находит что-то (или у вас другая ошибка), но затем либо all('li') не находит элементов, либо выбор отфильтровывает все элементы.

Как побочный узел, вы действительно не должны использовать select для этого в любом случае, а вместо этого должны указывать его в своем вызове all, как

find(ROLEDROPDOWN).find('li', exact_text: role_name).click_button

Это все еще может ошибка, но, по крайней мере, ошибка скажет вам, почему она не работает

...