LoginSignup
37
36

More than 5 years have passed since last update.

Capybara RSpecでのマッチャ、セレクタ 「こんなときどうするの」その1

Posted at

TDDやってますか?必須と言われつつも、なかなか習慣にするまでは時間かかりますよね。
本質的に 入力と評価したいものに集中できるよう、覚える必要があるマッチャとセレクタは、とっとと覚えられるようにしたいですね。

HTML要素の属性を評価したい

xpathでの記法とcssでの記法両方が使えますが、おそらく皆さんがなじみ深いのは(jQueryセレクタでよく使う) cssでの記法だと思いますので、そちらに集中して掲載します。

自分が楽だと思った方法

とりあえず、findに入れて、テキストが返ってくる状態にしてから、シンプルなマッチャで評価する。
have_css とか have_xpath とかで評価したいものを表現するよりも、書くのが早い気がする。

_spec.rb
find('#my_element')['class']
find('a#my_element')['href']

他のやり方

_spec.rb
expect(page).to have_css "a.my_link.disabled"
expect(page).to have_css "a.my_link[disabled]"

#要素の属性の値も評価したい場合
expect(page).to have_xpath "//a[@class='my_link' and @disabled='disabled']"

参考
http://stackoverflow.com/questions/5153550/capybara-assert-attributes-of-an-element

おまけ

CapybaraとSelenium Remote Webdriverを使っているときに、HTMLを保存してくれるLaunchyは起動しませんでした。せめて画像だけでも..という方は、以下の方法で Capybaraさんがスクショ取ってくれます。

_spec.rb
page.driver.browser.save_screenshot "保存したい画像ファイル名.png"

スクショは、RSpecを走らせているルートディレクトリに保存されるようです。

37
36
1

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