Если ваша истинная цель - найти ячейку «обновить», то у Аластера есть то, что звучит как разумный ответ.Тем не менее, обратите внимание, что событие 'wiring' находится на уровне div внутри ячейки, поэтому, если ваша цель состоит в том, чтобы нажать на 'refresh', это действительно div, на который вам нужно нажать
browser.cell(:id, "tdrefresh").div(:index, 1).click # note index would be 0 for firewatir
Примечаниечто если у вас есть вклад с вашими разработчиками с точки зрения способности к тестированию, вы можете предложить им разместить идентификатор на уровне элемента, который фактически вызывает действие.Например, указанная выше ячейка с идентификатором ничего не делает и является просто пассивным контейнером, потому что событие onclick находится на уровне div внутри этой ячейки.Так что было бы гораздо ценнее иметь идентификатор в этом div, а не в ячейке, в которой он находится.Если это так, то ваш код становится намного проще (и более совместимым с браузерами).
browser.div(id, 'tdrefresh').click
В противном случае вам понадобится одна из двух вещей.
1) нечто уникальное,это может быть другой элемент или текст, который находится внутри таблицы.Идентификатор, поскольку он должен быть уникальным на странице (исключая контент в фреймах), является отличным выбором, если он существует, в противном случае может потребоваться комбинация других атрибутов. Некоторые потенциальные примеры:
browser.cell(:id, "tdrefresh").parent.parent.parent #parents are row, tbody, table respectively
browser.cell(:text, "refresh").parent.parent.parent #will need to combine with index of text occurs in more than one cell)
browser.table(:text, /refresh/) # not likely to work well with nested tables
2) некоторый внешний контейнер, такой как div или span, который инкапсулирует таблицу, которую можно идентифицировать по уникальному свойству или комбинации свойств.(ничего не могу предложить, поскольку вы ничего не указали над табличным тегом в своем примере.