Есть ли способ найти номер строки/индекс, который содержит определенную строку в GEB? Я могу проверить, содержит ли строка определенную строку или нет:
text: contains()
Но как я могу найти индекс этой строки, а затем нажать ссылку в той же строке, используя этот идентификатор индекса? Любое предложение или помощь будут действительно оценены. Пожалуйста, не говорите, что я пробовал до сих пор. Я провел несколько часов и все равно никак!
EDIT: Хорошо, поэтому проблема была: я могу выбрать любую строку с известным индексом, например:
$('p', 1).click()
но когда я не знаю индекс строки и в этой конкретной строке, мне нужно выбрать ссылку/флажок, я считаю, что так мы хотим справиться с проблемой, не так ли? Или есть другой лучший способ сделать это?
Должен ли вы найти ссылку по строке? Если он находится в той же строке, почему бы не найти строку, contains
как было предложено, затем обратитесь к ее родительскому объекту, а затем вернитесь, чтобы найти ссылку?
например $('p', contains('some text')).parent().find(
ссылка ).click();
Если это не сработает, не могли бы вы объяснить, почему вам нужно получить доступ к нему в таком поместье?
Лучший способ обработки повторяющегося контента (таблицы/результаты поиска /etc...) в Geb - с помощью модуля. Пример из книги Геба:
class CartRow extends Module {
static content = {
cell { $("td", it) }
productName { cell(0).text() }
quantity { cell(1).text().toInteger() }
price { cell(2).text().toDouble() }
}
}
И определите список CartRows на нашей странице:
class CheckoutPage extends Page {
static content = {
cartItems { moduleList CartRow, $("table tr").tail() } // tailing to skip the header row
}
}
Поскольку возвращаемое значение cartItems представляет собой список экземпляров CartRow, мы можем использовать любой из обычных методов сбора:
assert cartItems.every { it.price > 0.0 }
У меня также есть рабочий пример этого в моем проекте Geb Examples на GitHub...