TDDやってますか?必須と言われつつも、なかなか習慣にするまでは時間かかりますよね。
本質的に 入力と評価したいものに集中できるよう、覚える必要があるマッチャとセレクタは、とっとと覚えられるようにしたいですね。
##HTML要素の属性を評価したい
xpathでの記法とcssでの記法両方が使えますが、おそらく皆さんがなじみ深いのは(jQueryセレクタでよく使う) cssでの記法だと思いますので、そちらに集中して掲載します。
###自分が楽だと思った方法
とりあえず、findに入れて、テキストが返ってくる状態にしてから、シンプルなマッチャで評価する。
have_css とか have_xpath とかで評価したいものを表現するよりも、書くのが早い気がする。
find('#my_element')['class']
find('a#my_element')['href']
###他のやり方
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さんがスクショ取ってくれます。
page.driver.browser.save_screenshot "保存したい画像ファイル名.png"
スクショは、RSpecを走らせているルートディレクトリに保存されるようです。