LoginSignup
24
14

More than 3 years have passed since last update.

Rails.Rspecにおける click_on find().clickなどの使い分け

Posted at

テストコードの話になります。

find().click

と言われるコードが出てきます。

これは検証ツールを使い
クリックしたい場所のinput要素とname属性を探して
()の中に書きます

find(input[name=commit]).click

これを入力することで
そのページのこの要素を持つボタンやリンクをclick
してくれるって書いてます。

つまり…
クリックしたい要素を!
その場所まで飛んで!
検証ツールで探して!
見つけたらそれを入力して!
って書いてます。

ご安心ください。
簡単なコード!
ご用意しました。

クリックしたいものがボタンの場合

<button>送信</button>
<input type="submit" value="送信">
form_with内の
<%= f.submit "送信" %=>

こんな形の場合。

click_button 'ボタンの表示名'

これを使います。 
押したいボタンの名前は「送信」なので

click_button '送信'

これでOKです。
簡単!!これで押したいボタンの表示名がわかれば設定可能ですね!
ただこれはリンクが押せません。

クリックしたいものがリンク(a要素やlink_to.)

<a href="rspec">RSpecについて</a>

<%= link_to "RSpecについて", rspec %> 

今回は「RSpecについて」の文字をクリックすると
そのページに行けるとします。
この場合は

click_link 'リンクの表示名'

を入力します

click_link ‘RSpecについて’

はい出来た。
余裕ですね。

これなら押して欲しいリンクの表示名だけわかればできます!
こっちはボタンが押せません。

そして!
ここにきてもう1段階進化します。(ごめんなさい長いです)

クリックしたいものがリンクなのかボタンなのか
分からないあなた!
安心してください!!
あります。

ボタンかリンクかわからんけど!
とりあえずここクリックして!

そんなあなたにはこれ!

click_on 'クリックしたい場所の表示名'

これはボタンでもリンクでもクリックしてくれます。

click_on ‘送信’
click_on ‘RSpecについて’

こんなこともできます!

ただし例外があります。

リンク先のないボタンや、リンクは押せません。
a要素の中にhrefを入力していない場合などは押せません。

<a>RSpecについて</a>

これにはhrefがないので押せません。

基本的にはclick_onで解決できるが、場合によっては他のものを使う必要がありそう。

以上です。

24
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
14