我正在研究 site_prism在 capybara 中实现页面对象模型。看起来很有趣。
我如何指定一个选择器,例如“[data-id='x']”,其中 x 是一个整数?像这样:
class Home < SitePrism::Page
set_url "http://www.example.com"
element :row, "[data-id='@id']"
end
然后在我的测试中:
Then /^the home page should contain a row$/ do
@home.should have_row 1234
end
最佳答案
因为 SitePrism 在定义元素时设置元素定位器,所以您的建议不起作用。要实现您的要求,请查看以下内容:
class Home < SitePrism::Page
elements :rows, "tr[data-id]"
def row_ids
rows.map {|row| row['data-id']}
end
end
它们不是映射单个行,而是全部映射(使用 elements
而不是 element
)。名为 row_ids
的单独方法收集所有具有“data-id”值的行,将所有这些值映射到一个新数组中,然后返回该新数组。
测试将包含如下内容:
Then /^the home page should contain a row$/ do
@home.row_ids.should include @id
end
...这将检查是否存在 ID 与 @id
匹配的行。
不是很漂亮,但应该可以。
关于ruby - 站点棱镜, capybara : Selector with variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825804/