Capybara :: ElementNotFound: Невозможно найти кнопку «Вход», которая не отключена - PullRequest
0 голосов
/ 28 апреля 2020

Я выполняю приемочный тест, который включает в себя вход через /users/sign_in.

Как настроить тест, чтобы я мог "нажать" кнопку отправки в Rspe c Тест на капибару?

Похоже, что Devise отключает кнопку отправки входа в систему и запускает javascript, чтобы все заработало.

<%= f.submit "Log in" %> 

производит:

 <input type="submit" name="commit" value="Log In" tabindex="4" data-disable-with="Log In" />

Data-disable-with, который разрабатывает потребности, похоже, нарушает тестирование капибары. Я просто хотел бы нажать кнопку в соответствии с моим приемочным тестом, приведенным ниже.

it "logs in and shows success message" do
  visit '/users/sign_in'
  login_as(user, :scope => :user)
  within(".login-details") do
    fill_in 'Email', with: user.email
    fill_in 'Password', with: 'fakepassword'
  end
  click_button 'Log in'
  expect(page).to have_content 'Success'
end

Производит:

Capybara::ElementNotFound:  Unable to find button "Log in" that is not disabled

Примечание. У меня есть несколько страниц, на которые при входе в систему пользователь может отправить пользователя Этот пример - самый простой тест, который обнаруживает эту ошибку. Так что моя цель не состоит в том, чтобы «убедиться в том, что придумано», если вам интересно, «зачем им это нужно?»

1 Ответ

1 голос
/ 28 апреля 2020

Атрибут data-disable-with используется Rails U JS для изменения текста кнопок после нажатия, чтобы не повлиять на этот тест. Глядя на элемент HTML, который вы разместили, value кнопки называется «Вход», поэтому, поскольку дело имеет значение, вам нужно будет сделать

click_button 'Log In'

вместо «Вход»

Мне интересно, почему у вас есть login_as(user, :scope => :user) в том же коде, где вы вводите имя пользователя и пароль, хотя вы обычно используете login_as только тогда, когда хотите обойти фактическое заполнение формы и ведение журнала в.

...