2012-01-12 12 views
0

コンパスCSSからエラーがないことを保証するキュウリ試験を書こうとしています。本文を選択:前にRSpec/XPath/CSSを使用する

エラーメッセージは、以下のCSSの例でページに挿入されています

body:before { 
    white-space: pre; 
    font-family: monospace; 
    content: "Syntax error: Undefined mixin 'horizontal-list'"; 
} 

だから私は身体を確実にステップを書きたい:の内容が空になる前に、私の周りのバリエーションをしようとしてきました次

page.should_not have_css("body:before") 

が、これはエラーを与える:

xmlXPathCompOpEval: function before not found 

誰かを知る方法を知っていますか:前に?

+0

私はそれが疑似要素であり、実際のHTML要素ではないと思っています。 – BoltClock

+0

はい私は同じ結論に達しました - なぜhave_xpathがうまくいくのか分かりましたが、私はhave_cssが動作することを期待していました。 – Ash

答えて

0

多くの検索の後、エレガントな方法で前にコンテンツを保持する方法はないと思います。

Then /^I should not see any compass errors$/ do 
    page.evaluate_script("document.styleSheets[1].cssRules[0].selectorText == \"body:before\";").should be_false; 
end 

上記のテストを最初cssRuleは、体のselectorText持っている場合: - 場合はコンパス真である前に、私はそれを共有したいと思いますので、しかし、私は自分の目的のために十分に動作する何かを持っていますページにエラーが挿入されました。

いくつかの注意点あなたは上記を使用する場合:

  1. あなたのドライバによっては、あなたのシナリオに@javascriptタグを配置する必要があるかもしれません(そうしないとあなたはNotSupportedByDriverError例外を得ることができます)
  2. 配列styleSheetsへのインデックスは、あなたのテストのブラウザとしてInternet Explorerを使用している場合は、JSを変更する必要があります
  3. (スタイルシートがインポートされている順序に依存する)あなたのために異なる場合があります - ここを参照してください:https://stackoverflow.com/a/311437/91205
  4. を私はしました遭遇するSafariとFirefoxの違い - SafariはselectorTextを "body :: before"としていますが、Firefoxは "body:before"(NB:vs::)のような問題を抱えている可能性があります。

誰かがこれを行うためのより良い方法を知っているなら、私は非常に興味がありますが、今のところ、上記のようにコンパスのエラーが止まるでしょう!

関連する問題