我想知道一些关于将选择器提取为常量的最佳实践。作为一般规则,通常建议将幻数和字符串文字提取到常量中,以便它们可以重用,但我不确定这在处理 Capybara 中的选择器时是否真的是一个好方法。
目前,我有一个名为“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、名称或标签
可能还有一些问题,所以我正在考虑摆脱常量。有没有人在类似的地方?有什么好的方法来处理这种情况?