So, hier ist mein Test.Rails Gurke Capybara id/Klasse Auswahl
When(/^the admin user broadcasts "([^"]*)" to the notification feed$/) do |userBroadcast|
visit('/broadcasts/new.html')
fill_in('.nifty_form', with: userBroadcast)
click_button('Broadcast')
end
Ich habe hinzugefügt, in meine new.html.erb eine Klasse ‚geschickte-Form‘ genannt, wie Sie unten sehen können.
<h1>New broadcast</h1>
<%= form_for(@broadcast) do |f| %>
<% if @broadcast.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@broadcast.errors.count, "error") %> prohibited this broadcast from being saved:</h2>
<ul>
<% @broadcast.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= hidden_field_tag 'page', @current_page %>
<div id="broadcast-area" class="main-input-area">
<p>
<%= f.text_area :content, cols: "100%", rows: "10", class: 'nifty-form',
title: "Broadcast text goes here", autofocus: 'autofocus'%>
</p>
<div id="url-part">
<%= link_to("Shortens URL",
id: "split-arrow",
title: "Press this to shorten the URL") %>
<%= text_field_tag :shorten_url, nil,
title: "Enter URL that you wish to shorten",
size: "50%" %>
</div>
<br/>
<div id="">
<%= f.submit 'Broadcast', confirm: 'Do you really want to broadcast?' %> |
<%= link_to 'Back', broadcasts_path(page: @current_page) %>
</div>
</div>
Aber aus irgendeinem Grund habe ich das Ergebnis:
Unable to find field "nifty_form" (Capybara::ElementNotFound)
ich die Quelle der wiedergegebenen Seite angesehen haben, und es ist die folgende:
<textarea cols="100%" rows="1o" class="nifty_form" title="Broadcast text goes here" autofocus="autofocus" name="broadcast[content]" id="broadcast_content" style="z-index: auto; position: relative; line-height: normal; font-size: 10.6667px; transition: none; background: transparent !important;" data-gramm="true" data-txt_gramm_id="b763ea7b-2eef-d3c8-b750-a085d2c9ce80" data-gramm_id="b763ea7b-2eef-d3c8-b750-a085d2c9ce80" spellcheck="false" data-gramm_editor="true"></textarea>
So sehen dies hat eine ID in der gerenderten Seite habe ich beschlossen, wie so einen Test mit dieser ID zu schreiben:
When(/^the admin user broadcasts "([^"]*)" to the notification feed$/) do |userBroadcast|
visit('/broadcasts/new.html')
fill_in('#broadcast_content', with: userBroadcast)
end
Aber noch einmal ich mit der gleichen Fehlermeldung von
Unable to find field "broadcast_content" (Capybara::ElementNotFound)
Gibt es eine Möglichkeit zum Ausdrucken aller Div der Klasse ist das Capybara sehen bin übrig geblieben? Wie kann ich dieses Problem beheben? Habe ich recht, wenn ich annehme, dass Cappybara dem Link folgt, nachdem ein Button angeklickt wurde? und die Sitzung wird am Leben erhalten?
Ich habe alle oben genannten Beispiele ausprobiert und ich immer noch ein Element nicht gefunden wird, habe ich mehr meiner geklebt erb.html Datei oben. – Definity
@Definity es klingt wie die Textarea ist nicht wirklich auf der Seite sichtbar und wird durch ein JS-Widget ersetzt. Ist das der Fall? In diesem Fall müssen Sie mit den Elementen des Widgets und nicht mit dem Textarea interagieren. –