0

定数へのセレクターの抽出に関するいくつかのベストプラクティスについて疑問に思っていました。原則として、マジックナンバーや文字列リテラルを定数に抽出して再利用できるようにすることが通常推奨されていますが、カピバラでセレクターを扱う場合、これが本当に良いアプローチであるかどうかはわかりません。

現在、使用するセレクターを含む「selectors.rb」というファイルがあります。ここにその一部があります:

SELECTORS = {
   checkout: {
        checkbox_agreement: 'input#agreement-1',
        input_billing_city: 'input#billing\:city',
        input_billing_company: 'input#billing\:company',
        input_billing_country: 'input#billing\:country_id',
        input_billing_firstname: 'input#billing\:firstname',
        input_billing_lastname: 'input#billing\:lastname',
        input_billing_postcode: 'input#billing\:postcode',
        input_billing_region: 'input#billing\:region_id',
        input_billing_street1: 'input#billing\:street1',
    ....
}

理論的には、セレクターをこのファイルに入れると、次のようなことができます。

find(SELECTORS[:checkout][:input_billing_city]).click

これにはいくつかの問題があります。

  • 使用されているセレクターを知りたい場合は、調べなければなりません
  • selectors.rb の名前を変更すると、ファイル内の別の場所で名前を変更するのを忘れる可能性があり、その結果、find(nil).click
  • fill_in(SELECTORS[:checkout][:input_billing_city])上記の例では、ID、名前、またはラベルが必要なため、このセレクターを で使用することはできません

おそらくそれにはさらにいくつかの問題があるので、定数を取り除くことを検討しています。誰かが同じような場所にいましたか?この状況に対処するための良い方法は何ですか?

4

1 に答える 1

0

誰かが私に SitePrism gem について言及しました: https://github.com/natritmeyer/site_prism

Capybara のページ オブジェクト モデル DSL

SitePrism は、ページ オブジェクト モデル パターンを使用してサイトを記述するためのシンプルでクリーンなセマンティック DSL を提供し、自動受け入れテストで Capybara とともに使用します。

その点で非常に役に立ち、それに応じてコードを調整しました。

于 2013-08-16T10:25:55.230 に答える