Rspec с Capybara не находит ссылку или какие-либо элементы - PullRequest
0 голосов
/ 16 января 2019

Я пишу функциональные тесты для моего приложения на Rails 5. Одной из особенностей является возможность щелкнуть ссылку с помощью метода POST.

visit "/admin/client_servers/#{client_server.id}"
click_on('Request Review From Application Owner')

Я получаю сообщение об ошибке «Capybara :: ElementNotFound: Невозможно найти ссылку или кнопку« Запросить отзыв от владельца приложения »»

Просто экспериментируя, я проверяю, может ли тест найти какой-либо элемент, который, как я знаю, находится на экране. У меня есть один контейнерный div с классом 'description', и тест не может найти элемент.

Предыдущий тест проходит

  visit "/admin/client_servers/#{client_server.id}"
  expect(page).to have_text("Request Review From Application Owner")

Итак, я знаю, что текст, на котором я хочу щелкнуть, появляется на странице. Мой HTML настроен:

<div class="mark-ready-btn server-button" id="overall-tab" data-param="overall">
    <%=link_to admin_client_servers_update_review_status_path(status: 1, id: @server.id), class: "request-review-btn", method: 'POST' do%>
      <div class="server-mark-ready" id="overall-tab" data-param="overall">
        Request Review From Application Owner
      </div>
    <%end%>
</div>

Я проверил, но тест не может найти теги css '.mark-ready-btn server-button', '.request-review-btn' или '.server-mark-ready'. Я искал эту проблему онлайн и изучил документацию по Capybara и Rspec. Что-то мне не хватает или неправильный синтаксис, который я написал в тесте? Буду признателен за любую помощь в этом вопросе.

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Если Capybara не может найти ссылку или кнопку, обычно означает, что ссылки или кнопки нет. Вам нужно будет использовать метод «click».

Из вашего примера HTML это должно работать

1.first('.server-mark-ready).click
2.page.all('.server-mark-ready)[#].click (in case there is more than one div that has that class)
0 голосов
/ 01 февраля 2019

find("#overall-tab").click должен сделать работу

Или, если вы действительно хотите нажать на конкретный текст, попробуйте:

find('div', text: 'Request Review From Application Owner').click

0 голосов
/ 24 января 2019

Вы можете попробовать -

within ".mark-ready-btn.server-button" do
  click_on ".server-mark-ready"
end

Или вы можете использовать "найти"

find('.server-mark-ready').click
...