С кодом, который вы предоставили, вам нужно использовать
puts index
Ошибка, которую вы получаете, заключается в том, что для объекта ячейки не определен метод .index.
Способ работы .each_with_index заключается в том, что он позволяет передавать в блок две вещи: объект, извлеченный из коллекции (в данном случае «ячейка»), и вторую переменную, которая является индексом объекта в коллекции. В вашем случае вы назвали эту переменную «index», хотя часто очень просто использовать «i» для итератора или значения индекса.
Таким образом, вместо того, чтобы пытаться вызвать .index (метод, который не существует) для объекта ячейки, вам нужно просто использовать имя второй переменной, передаваемой в цикл do
BROWSER.table(:class,"head").row(:index,2).cells.each_with_index do |cell, i|
puts i
puts cell.text
end
Кстати: я полагаю, что возможно создать такой метод, но дело в том, что объекту очень трудно узнать свой собственный индекс, так как индекс относительно некоторого внешнего контейнера. Например, ячейка может быть 15-й ячейкой таблицы, 7-й ячейкой строки и 24-й ячейкой в одном div, но 42-й ячейкой в другом div. Так что, если бы вы вызвали .index в такой ячейке, как бы она узнала, КАКОЙ из этих индексов (или многих других) она должна возвращаться?