ruby - 站点棱镜, capybara : Selector with variable

标签 ruby ruby-on-rails-3 capybara pageobjects site-prism

我正在研究 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/

相关文章:

c++ - Rails - 如何创建桌面应用程序?

ruby-on-rails - capybara 附件

xpath - 使用 Capybara 和 Xpath 悬停和单击按钮时遇到问题

ruby - 压缩输出不同于 Go to Ruby 实现

ruby-on-rails - 如何使用 wicked_pdf 将 pdf 文件保存在公用文件夹中

ruby-on-rails - Array.shift 的问题

firefox - 为什么当我运行测试时打开的是 Firefox 而不是默认浏览器 chromium?

ruby - 使用 Ruby 合并 CSV 文件相同的唯一 ID

ruby-on-rails - 在 Rails 项目中不断自动加载的问题(偶尔工作)

ruby-on-rails - Ruby on Rails 最稳定( headless 痛)的开发环境?