1

我的代码是这样的:

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元素的范围??

谁能帮我这个...??

4

1 回答 1

3

如果我导航到不同的页面,那么我会失去数组元素的范围??

是的,范围变了。

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

关于如何使它工作...

问题中的代码似乎存在许多问题。第一个是您within在元素而不是部分的上下文中使用块的事实。我要做的第一件事(无法看到您的代码)是将您的替换elementssections,并且我会将其建模 li为一个部分。例如:

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

然后我将模型的li元素添加ul为页面中的部分集合,例如:

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

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

@my_page = MyPage.new

number_of_list_items = @my_page.list_items.size

number_of_list_items.times do |list_item_position|
  MyPage.new.list_items[list_item_position].some_element.click
  MyPage.new.list_items[list_item_position].some_other_element.click
end
于 2013-08-04T13:51:45.453 回答