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

时间:2013-07-03 06:49:59

标签: ruby cucumber capybara site-prism

我的代码是这样的:

my_array.each do |element|
  within element do
    some_element.click         #it will take me to next page
    some_other_element.click   #it will take me to previous page for next iteration
  end
end

在siteprism页面中,它是这样的:

elements :array, 'ul.class li'

当我运行时,它在第一次迭代中成功执行,但在第二次迭代中它的抛出错误如cache element not available

如果我导航到不同的页面,那么我将放宽my_array元素的范围

任何人都可以帮我这个...... ??

1 个答案:

答案 0 :(得分:3)

  
    

如果我导航到不同的页面,那么我将放宽数组元素的范围?

  

是的,范围已经改变。

它失败的原因是因为第一页运行循环时页面上的元素在第二页上不存在,即使它们看起来像是 - 它们是不同的元素。因为您已移动页面,所以您需要从头开始重新获取元素。

关于如何使其发挥作用......

问题中的代码似乎存在许多问题。首先是你的事实 在元素的上下文中使用within块而不是节。我做的第一件事(不是 能够看到你的代码)是用elements替换你的sections,我会模拟任何 li是一个部分。例如:

class MySection < SitePrism::Section
  element :some_element, "#some-element"
  element :some_other_element, "#some_other_element"
end

然后我将li的{​​{1}}元素添加为页面中的部分集合,例如:

ul

为了解决范围界定问题,我会有以下内容:

class MyPage < SitePrism::Page
  sections :list_items, MySection, 'ul.class li'
end