Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 迭代水豚中的项目_Loops_Iteration_Capybara - Fatal编程技术网

Loops 迭代水豚中的项目

Loops 迭代水豚中的项目,loops,iteration,capybara,Loops,Iteration,Capybara,我有一个包含class.block的多个元素的页面。在Capybara中,我希望能够在完成操作之前循环并引用此类中的每个元素 然而,到目前为止,我尝试过的代码都不起作用。以下是我尝试过的: within('.block:nth-child(1)') do find('.Button').click end page.find('.block').all.first.find('Button').click page.find('.block').all[1].find('Button')

我有一个包含class.block的多个元素的页面。在Capybara中,我希望能够在完成操作之前循环并引用此类中的每个元素

然而,到目前为止,我尝试过的代码都不起作用。以下是我尝试过的:

within('.block:nth-child(1)') do
  find('.Button').click
end

page.find('.block').all.first.find('Button').click

page.find('.block').all[1].find('Button').click

有什么想法吗?

您想使用
all
方法(请参阅)

使用类“block”输出每个元素的文本(即迭代)的示例如下:

page.all(:css, '.block').each do |el|
    puts el.text
end
page.all
返回匹配元素的数组。因此,如果只需要第二个匹配元素,可以执行以下操作:

page.all(:css, '.block')[1]  #Note that it is 0-based index

谢谢我如何用它来指代第二个元素?我可以看到如何引用第一个元素,但在
页面之后没有任何其他元素。all
将返回匹配元素的数组,因此您可以使用标准数组方法。答案中增加了一个例子。嗨,贾斯汀,我是另一个有同样问题的人。尝试您用
放置el.text
解释的第一种方法,但获得
。你知道为什么会这样吗?嗨,米克尔。我无法重现你的问题。你能打开一个新的问题,并包含一个示例html和代码来重现你的问题吗?