定数へのセレクターの抽出に関するいくつかのベストプラクティスについて疑問に思っていました。原則として、マジックナンバーや文字列リテラルを定数に抽出して再利用できるようにすることが通常推奨されていますが、カピバラでセレクターを扱う場合、これが本当に良いアプローチであるかどうかはわかりません。
現在、使用するセレクターを含む「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、名前、またはラベルが必要なため、このセレクターを で使用することはできません
おそらくそれにはさらにいくつかの問題があるので、定数を取り除くことを検討しています。誰かが同じような場所にいましたか?この状況に対処するための良い方法は何ですか?