2016-07-27 4 views
3

、私たちのコード内の典型的な行は次のようになります劇的に変化する可能性があります。私は最高のこの急激な変化のために準備する方法をcss-modulesを使ってサイトでCapybara findersを調整するには?</p> <p><code>find('.edit-icon').click</code></p> <p>私たちは、私たちのプロジェクトでは、CSS-モジュールを使用する我々の方法にしていると私は警告してきたそのクラス名:私たちの自動テストで

css modules by Glenn Maddern

:かわいいおどけた例では、(あなたがページを閲覧するとき)そのクラス名に絵文字を使用していますこのサイトのですか?仕様の多くは壊れていると思いますが、私たちのプロジェクトでこの新技術を使ってテストを書くことができないのではないかと心配しています。

+1

にセレクタを変更することができます動作します注意してください.com/jnicklas/capybara/blob/master/lib/capybara/selector.rb - 物事を抽象化して 'find(:edit_button).click'のようにすることができます。しかし、完全な答えは "それは依存している" - なぜあなたは最初にcssクラスを使いましたか? –

+0

私が提供した例では、私のプロジェクト全体で共通しているので、識別テキストやその他の属性では見つからないボタンやその他の要素があります。私はまた、クラス名セレクタを使用して、期待を書いているあいまいさや誤認を避ける傾向があります(たとえば、テキストがある領域から別の領域にジャンプすると予想される場合など)。私たちのプロジェクトが進むにつれて、より具体的な例を提供できることを願っています。クラスは通常、自動化された仕様では使用されませんか?助けてくれてありがとう、トム。 – Phil

+0

はい、クラスはかなり使われていますが、私はそれらを最後の手段として試してみる傾向があります。テキストやその他の属性がない要素は、主な使用例です。私はカスタムセレクタがここで助けることができると述べたように - Capybara.add_selector(:edit_button){css do |ロケータ| '.edit-icon' end} - これはcssを1つの場所に隔離します。クラス名が変更されたら、セレクタを変更して、クラス名がどのように構成されて最終的に –

答えて

2

カスタムカピバラセレクタを使用すると、実行中の実際のCSSクエリから抽象化して1つの場所に移動できます。あなたのコメントでは、渡された値で始まるクラス属性に変更する必要があると述べました。

Capybara.add_selector(:class_starts_with) do 
    css { |locator| "[class^=\"#{locator}\"]" 
end 

はそれを行うだろうし、その後

find(:class_starts_with, 'something') 

として呼び出すことができます。また、設定されている場合Capybara.default_selector =:それはちょうど

find('something') 

よりもむしろ別のオプションをdefault_selector変えるだろうclass_starts_with find_by_class_startのようなヘルパーメソッドを定義するか、class_starts_with passed(カピバラの#find_fieldなどの動作方法)を使って見つけるだけのものを定義することです。 // githubの:HTTPS -

はまた、上記のカスタムセレクターはだけは本当に一つの方法は、カスタムカピバラセレクタを使用することです唯一のクラス名が設定された場合は、複数が予想される場合、あなたは"[class^=\"#{locator}\"], [class*=\" #{locator}\"]"

+0

Hey Tom、 'have_css'のカスタムマッチャーを' find ) '?私はそれについても何らの証拠も見つけられないようです。 – Phil

+1

@Phil 'have_css(...)'は基本的に 'have_selector(:css、...)'であり、 'have_selector(...)'はデフォルトでCapybara.default_selectorになります。だからあなたは 'have_selector(:class_starts_with、...)'を行うことができました。 –

+0

ああ、私はそれを知りませんでした!このスレッド全体を通して、助けてくれてありがとう。私は本当に、本当にそれを感謝します。 – Phil

関連する問題

 関連する問題