2013-09-18 10 views
12

私はカピバラと非常に奇妙な行動をしています。それは頑強に私のログインフォームのフィールドに記入することを拒否します。楽しみが始まるカピバラは見つけることができますが、fill_inではありません

<fieldset> 
    <div class="clearfix"> 
    <label for="user_email">E-Mail Adresse</label> 
    <div class="input"> 
     <input id="user_email" name="user[email]" size="30" type="email" value=""> 
    </div> 
    </div> 

    <div class="clearfix"> 
    <label for="user_password">Passwort</label> 
    <div class="input"> 
     <input id="user_password" name="user[password]" size="30" type="password" value=""> 
    </div> 
    </div> 

    <div class="clearfix"> 
    <div class="input"> 
     <input name="user[remember_me]" type="hidden" value="0"> 
     <input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1"> 
     <label for="user_remember_me">angemeldet bleiben</label> 
    </div> 
    </div> 
</fieldset> 

そして、ここでは、次のとおりです。

within("#login_form"){ find("#user_email")}            
=> #<Capybara::Element tag="input" path="/html/body/div[2]/div[@id='content']/div/div[1]/form[@id='login_form']/fieldset/div[1]/div/input[@id='user_email']"> 
within("#login_form"){ fill_in("#user_email", with: "[email protected]")}     
Capybara::ElementNotFound: Unable to find field "#user_email" 

私はかなり見つけることができるようにすることが可能であるかを理解していない、まだ、要素を見つけることができません。 これについての別のペアの作品は高く評価されます。

+2

'fill_in( 'user_email'、:with => '[email protected]')'を '# 'を付けずに試してみてください。 – depa

答えて

20
findため

ロケータとfill_inが異なっている:

  • findを - すなわちCSSセレクタまたはXPathを - 最初のパラメータは、Capybara.default_selectorであると仮定され、シンボルではない場合。
  • fill_in - 最初のパラメータは、フィールドの名前、ID、またはラベルのテキストです。

文字列 "#user_email"は、css-selectorを表します。このため、findでは動作しますが、fill_inでは動作しません。

fill_inを動作させるには、単にid値を渡す必要があります。つまり「user_email」だけです。

within("#login_form"){ fill_in("user_email", with: "[email protected]")} 
+0

こんにちは@Justin Ko、私はすべてのロケータの値がExcelに保存されているので、既に 'find'を使って見つかった要素を使用して興味を持っているフレームワークに取り組んでいます。その要素の他の属性を 'fill_in'のためだけにもう一度チェックする自由はありません 代替はありますか? –

+0

'find'を使って見つかったフォームフィールドにデータを記入できるかどうかを知りたかっただけです。答えは '#set'を使っていると思います。 –

関連する問題