Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Site Prism,Capybara:带变量的选择器_Ruby_Ruby On Rails 3_Capybara_Pageobjects_Site Prism - Fatal编程技术网

Ruby Site Prism,Capybara:带变量的选择器

Ruby Site Prism,Capybara:带变量的选择器,ruby,ruby-on-rails-3,capybara,pageobjects,site-prism,Ruby,Ruby On Rails 3,Capybara,Pageobjects,Site Prism,我正忙于在capybara中实现一个页面对象模型。看起来很有趣 如何指定选择器,例如“[data id='x']”,其中x是整数?大概是这样的: class Home < SitePrism::Page set_url "http://www.example.com" element :row, "[data-id='@id']" end 因为SitePrism在定义元素时设置元素定位器,所以您的建议不起作用。要实现您的要求,请查看以下内容: class Home < Si

我正忙于在capybara中实现一个页面对象模型。看起来很有趣

如何指定选择器,例如“[data id='x']”,其中x是整数?大概是这样的:

class Home < SitePrism::Page
  set_url "http://www.example.com"
  element :row, "[data-id='@id']"
end

因为SitePrism在定义元素时设置元素定位器,所以您的建议不起作用。要实现您的要求,请查看以下内容:

class Home < SitePrism::Page
  elements :rows, "tr[data-id]"

  def row_ids
    rows.map {|row| row['data-id']}
  end
end
…这将检查是否存在ID与
@ID
匹配的行


没有那么漂亮,但它应该可以工作。

因为SitePrism在定义元素时设置元素定位器,所以您的建议不起作用。要实现您的要求,请查看以下内容:

class Home < SitePrism::Page
  elements :rows, "tr[data-id]"

  def row_ids
    rows.map {|row| row['data-id']}
  end
end
…这将检查是否存在ID与
@ID
匹配的行


没有那么漂亮,但它应该可以工作。

或者,如果您喜欢这种方式,您可以进一步了解Nat的建议,并将行元素定义为一个简单的方法,然后可以将id作为参数:

class Home < SitePrism::Page
    elements :rows, "tr[data-id]"

    def row_with_id(id)
         rows.find {|row| row['data-id'] == id.to_s}
    end
end

或者,如果您喜欢这种方式,您可以进一步了解Nat的建议,并将row元素定义为一个简单的方法,然后可以将id作为参数:

class Home < SitePrism::Page
    elements :rows, "tr[data-id]"

    def row_with_id(id)
         rows.find {|row| row['data-id'] == id.to_s}
    end
end

我通过以下方法解决了这个问题——这是一个黑客行为,决不遵循页面对象模式。但我无法从上面找到答案

我的特色:

我的步骤如下所示: 在我的页面对象类中:
我通过以下方法解决了这个问题——这是一个黑客行为,决不遵循页面对象模式。但我无法从上面找到答案

我的特色:

我的步骤如下所示: 在我的页面对象类中:
纳特,干杯。你写的宝石,所以你应该知道!哈纳特,干杯。你写的宝石,所以你应该知道!哈
Then /^the home page should contain a row$/ do
    @home.row_with_id(1234).should_not be_nil
end
 Then I click on book 3 from the list
 Then /^I click on book (.*) from the list$/ do |index|
   page.method_find(index)
 end
  def method_find(index)
    find(div > div > span.nth-child({index})).click
  end