我想知道有关将选择器提取到常量的一些最佳实践。作为一般规则,通常建议将幻数和字符串文字提取到常量,以便可以重复使用,但我不确定在处理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
这有几个问题:
find(nil).click
fill_in(SELECTORS[:checkout][:input_billing_city])
一起使用,因为它需要ID,名称或标签可能还有一些问题,所以我正在考虑摆脱常数。有没有人在类似的地方?处理这种情况的好方法是什么?
答案 0 :(得分:0)
有人向我提到了SitePrism gem:https://github.com/natritmeyer/site_prism
Capybara的页面对象模型DSL
SitePrism为您提供了一个简单,干净和语义的DSL来描述 您的网站使用Page Object Model模式,与Capybara一起使用 在自动验收测试中。
在这方面非常有帮助,我已相应调整了我的代码。