2016-12-02 4 views
0

これは私のテストです。Railsキュウリカピバラid/class選択

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 

下記のように、new.html.erbに 'nifty-form'というクラスを追加しました。

<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> 

しかし、いくつかの理由で、私は結果を得る:

Unable to find field "nifty_form" (Capybara::ElementNotFound) 

私はレンダリングされたページのソースを見ていると、それは以下の通りです:

<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> 

だから、これは持って見てレンダリングされたページのID私はこのようなIDを持つテストを書くことにしました。

しかし、またしても私はすべての事業部のクラスのカピバラを見ることができるプリントアウトする方法はあり

Unable to find field "broadcast_content" (Capybara::ElementNotFound) 

の同じエラーメッセージが残っていますか?この問題をどのようにデバッグできますか?ボタンがクリックされた後、Cappybaraがリンクをたどっていると仮定して正しいですか?セッションは生きていますか?

答えて

0

capybaras fill_inは、fill_inしたい入力の名前、id、プレースホルダ、またはラベルテキストを受け取ります。 CSSセレクタは使用しません。 idはあなたがCSSセレクタを使用したい場合、あなたは

find(:css, '#broadcast_content').set(userBroadcast) # the :css is optional if your default selector type is set to :css 
ような何かをする必要があると思います「broadcast_content」ではない「#broadcast_content」

あるので、あなたの例では

fill_in('broadcast_content', with: userBroadcast) 

に変換することを

カピバラの最新バージョンでは、ロケータ文字列がオプションになっています:idと:classオプションが利用できるので、あなたの最初の試みは次のように書かれている可能性があります。

fill_in(class: 'nifty_form', with: userBroadcast) 

クラスは、一般的にページ上で一意ではありませんので、あなたはおそらく、私は上記のすべての例を試してみましたし、要素が見つからない、私はまだ、私は私の多くを貼り付けていますID

+0

にこだわっ方がいいでしょうが、上記のerb.htmlファイル – Definity

+0

@Definityそれは、テキストエリアが実際にはページに表示されず、JSウィジェットに置き換えられているように聞こえます。それは事実ですか?その場合は、テキストエリアではなくウィジェットの要素と対話する必要があります。 –

関連する問題