带有Capybara的Rspec找不到链接或任何元素

时间:2019-01-16 15:06:01

标签: ruby-on-rails testing rspec ruby-on-rails-5 capybara

我正在为Rails 5应用程序编写功能测试。一种功能是能够使用POST方法单击链接。

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

我收到错误消息“ Capybara :: ElementNotFound:无法找到链接或按钮“从应用程序所有者请求审阅””

只是进行实验,我检查一下测试是否可以找到屏幕上我知道的任何元素。我有一个带有“描述”类的容器div,测试无法找到该元素。

先前的测试通过

  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服务器按钮”,“。request-review-btn”或“ .server-mark-ready”。我在线搜索了此问题,并查看了Capybara和Rspec文档。测试中是否缺少某些内容或语法不正确?非常感谢您对此问题的帮助。

3 个答案:

答案 0 :(得分:1)

您可以尝试-

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

或者您可以使用“查找”

pickle

答案 1 :(得分:0)

如果水豚找不到链接或按钮,通常表示没有链接或按钮。您将必须使用“点击”方法。

从您的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)

答案 2 :(得分:0)

find("#overall-tab").click应该可以完成工作

或者,如果您确实要单击特定文本,请尝试:

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