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

标签 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,这对我来说似乎并不理想。

最佳答案

我从未这样做过,但一种方法可能是将 :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')

关于ruby - 使用 site_prism 获取所选选项文本的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34680305/

相关文章:

ruby - 如何从 capybara 元素中提取 Selenium 元素?

ruby - 有没有办法生成当前页面上的 Siteprism 对象的数组或哈希

ruby - 我们可以在 capybara/siteprism 的循环内导航到不同的页面吗?

ruby-on-rails - 为 Prawn 中的某个单元格指定样式(特别是字体)

ruby-on-rails - 使用 Capybara 测试文件上传 - 不是表单,而是按钮和 javascript 函数

ruby-on-rails - Rspec capybara 用户无法登录

ruby-on-rails - 抑制 Rspec 3 的回溯

mysql - Ruby 和 mysql2-迭代结果集中的行子集

mysql - 将 CSV 保存到 blob 中

ruby-on-rails - 如何找到所有使用 sudo gem install 安装的 ruby​​ gem?