0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

capybaraでfields_forのformの要素をあいまい検索でテストする

Posted at

はじめに

最近はrspec書いてて、これどうすんねんーーーってとこあったので備忘録的な感じで書いておきます。

今回の困りごと

fields_forformを追加した際に、formの要素をどうやって指定すればいいか困りました。
スクリーンショット 2020-01-26 2.22.58.png

今回は画像のプラスボタンを押すとformが追加されるようになっており、値を入力して保存できるかどうかをチェックしたいのですが、追加したformのindex番号はランダムで生成されるため、

<input type="text" name="user[users_attributes][1579974088711][name]" id="users_attributes_1579974088711_name">

上記のような[1579974088711]が数字が生成されています。
なので、

fill_in 'user[users_attributes][2][name]', with: '夜勤'

というふうにindex番号の指定ができないです。

解決策

指定ができない場合どうやって空白のformに文字入力したらいい?

  • ページ内のformを全部検索してきて、最後の要素を指定してやればいいです。
    全体から検索してくるには、
all("input[name$='[name]']")[2].set("夜勤")

のようにすれば入力してくれるようになります。

find("input[name$='[name]']")[0].set("夜勤")

でもいけるようですが、自分は動きませんでしたのでallで全体から探すようにしています。

おわりに

今回findで動かなかったがすごい気持ちわるいなーと思ったんですが、無事テストはできたんでよかったです。
なので、動的に追加したformのテストはこれでfindallで全体から探して、そのindex番号で指定してやればいいかと思います。
なにかご指摘等あればよろしくお願いします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?