繁体   English   中英

迭代数组Capybara Cucumber

[英]Iterate over array Capybara Cucumber

我很难找到解决方案。

我正在访问网页上的表格。 应用特定过滤器后,每行中的一个数据项必须包含特定值。

我试图从表数据中创建一个数组,使每一行成为自己的索引。

一旦我有索引,我想在这一行范围内找到我所追求的特定值。

到目前为止,我有以下内容:

results_table = all('table#clickable-rows tr')

    results_table.each do |row|


     within(results_table[row]) do
        table_data = all('table#clickable-rows td')
          expect(table_data[3]).to have_text TEXT
      end
    end
  end

这是我正在努力的迭代。 有人有解决方案吗?

谢谢

这里有一些错误 - 一旦你开始在results_table行上迭代就是实际的行元素(不是行的索引),所以你不应该再次索引到results_table。 此外,一旦你within(element)调用within(element)所有CSS发现将相对于该元素,因此您不需要再次找到该表(除非查找嵌入在原始表中的表)。 你可能想要更像的东西

results_table = all('table#clickable-rows tbody tr')
results_table.each do |row|
  within(row) do
    table_data = all('td') # you could also just find the third one with nth-child if you only want that one column
    expect(table_data[3]).to have_text TEXT
  end
end

结束

或者不使用内部

results_table = all('table#clickable-rows tbody tr')
results_table.each do |row|
  table_data = row.all('td')
  expect(table_data[3]).to have_text TEXT
end

这里要注意的一件重要事情是,默认情况下all都不会等待行显示,所以如果使用支持JS的驱动程序运行,你可能想要使用像

results_table = all('table#clickable-rows tbody tr', minimum: 1) #you can adjust minimum if you need to wait for more rows to be on the page

确保表行实际出现在页面上

在这里,我得到了社区帮助的解决方案。

results_tabletable_data变量需要包括TBODY。 一旦我添加了它,它就能找到所需的内容。

results_table = all('table#clickable-rows tbody tr')
    results_table.each do |row|
      within(row) do
        table_data = all('table#clickable-rows tbody tr td') 
          expect(table_data[3]).to have_text TEXT
     end
   end
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM