在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.
相关产品推荐
相关产品推荐

