【Rails】Rspecのリンクでxpathを使う

Ruby on Railsアイキャッチ画像

Rspecでリンクやボタンにxpathを使う方法についてです。

こんなとき使える

以下のスクショ画面の場合


Rspecのクリック操作のコードは、valueの値を使えばこんなふうに書く。
click_on ‘Create my account’
けど、このボタンの名前を変更(例えば”Create my account”を”アカウント作成”に変更)したら
このテストが通らなくなってしまう。
xpathを使えば、パスで指定しているからそんなことが無くなる。

xpathの確認の仕方↓

他には


同じページに、役割は異なる、同じ名前のリンクを作った場合にも使える。
例えば、タスクアプリで、終了期限と優先度のソート機能を作って、それぞれ同じソートアイコンを使う。
ソートアイコン自体は同じものだけど、役割が違うからRspecでは別々の名前をつけてあげないといけない。
xpathを使えばそれぞれ別名にできる。

書き方

valueで指定する場合

click_on 'Create my account'

xpathで指定する場合
パターン1:

find(:xpath, '/html/body/form/input[6]').click

調べた感じこれが一番シンプルに書けそうな書き方だった。

パターン2:

Create_account_link = find(:xpath, "/html/body/form/input[6]")
Create_account_link.click

パターン1を変数に入れた。
clickのところは、click_on, click_link, click_buttonではダメだった。

xpathの書き方を調べると、いろいろあってどれが正しい書き方か分からず、この書き方が正しいかわかりませんが、これで出来はしました。

間違いがありましたら、コメントいただけると幸いです。

コメント