我正在为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文档。测试中是否缺少某些内容或语法不正确?非常感谢您对此问题的帮助。
答案 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