使用site_prism获取所选选项文本的正确方法是什么?

时间:2016-01-08 15:17:41

标签: ruby capybara site-prism

我有一个site_prism元素指向一个选择框。像这样:

class MyPageObject < SitePrism::Page
  element :my_select_box, '#select-box-id'
end

虽然我有办法获得所选的选项值,但是:

my_page_object.my_select_box.value

我找不到一个很好的方法来获取所选的选项文本。我发现的唯一解决方法是:

my_page_object.my_select_box.find("option[selected]").text

使用SitePrism API有更好的方法吗?因为上面的解决方法使用了SitePrism和capybara API的混合,这对我来说似乎并不理想。

1 个答案:

答案 0 :(得分:3)

我从来没有这样做,但有一种方法可能是定义:my_select_box作为一个部分,然后在该部分下访问所选元素

class SelectSection < SitePrism::Section
  element :selected, 'option[selected]'
end

class MyPageObject < SitePrism::Page
  section :my_select_box, SelectSection, '#select-box-id'
end

应该允许您访问

my_page_object.my_select_box.selected.text

一个很好的问题是你想要访问文本的原因 - 如果它是因为你想根据已知文本验证所选项目的文本,那么你最好将元素声明为选择使用Capybaras选择器,以便您可以使用内置查找器选项

class MyPageObject < SitePrism::Page
  element :my_select_box, :select, 'select-box-id' # since it's now using Capybaras :select selector it's no longer a css selector so no # in front
end

然后应该让你做

expect(my_page_object).to have_my_select_box(selected: 'the text expected to be selected')