我正在努力寻找解决方案。
我正在访问网页上的表格。应用特定筛选器后,每行中的一个数据项必须包含特定值。
我尝试从表数据中创建一个数组,使每一行都成为自己的索引。
获得索引后,我想在此行内限定范围以找到我所追求的特定值。
到目前为止,我有以下内容:
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)
所有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_table
和table_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