You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PageObject中使用page_sections时能否定义[1..-1]范围?

关于PageObject中page_sections使用范围索引的解答

嘿,你的这个写法是可行的,但有个小前提需要注意——得看你用的PageObject gem版本支不支持。

具体来说:

  • 当你在page_sections里指定index: [1..-1]这种范围时,PageObject会自动匹配所有符合class: 'block-class'的元素,然后筛选出索引从1到最后一个的那些,把它们封装成SecondaryBlocks的实例集合,完全符合你想要排除第一个块、获取剩余所有块的需求。
  • 不过要确认下你的gem版本,较新的版本(大概2.0及以上)已经支持这种范围索引的写法,如果是比较老的版本,可能得先升级一下gem才能用。

要是你担心版本兼容问题,也可以换个更稳妥的写法,用lambda来过滤元素索引:

page_sections(:remaining_blocks, SecondaryBlocks, class: 'block-class') do |element|
  element.index > 0
end

这种方式在大多数版本的PageObject里都能正常工作,效果和用范围是一样的。

你还可以写个小测试验证下效果,比如在测试用例里检查剩余块的数量是不是总块数减1:

main_page = MainHTML.new(browser)
total_blocks = main_page.outer_div.elements(class: 'block-class').size
expect(main_page.outer_div.remaining_blocks.size).to eq(total_blocks - 1)

内容的提问来源于stack exchange,提问作者Praveen P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:52:36