Получение индекса искомого элемента в ElementsCollection

Доброго дня!)
Ситуация заключается в следующем. Имеется динамический реестр записей, в который, с использованием автотеста, добавляется запись AutoQACategory. Так как реестр динамический, я не знаю, какой индекс присвоен данной записи. Для получение элементов реестра, и нахождения требуемой записи использую следующий подход:
public void elementsInTable(){
ElementsCollection classes = $$x("//tbody/tr[@class]");

    for(SelenideElement record : classes){
        SelenideElement test = record.shouldHave(text("AutoQACategory"));
    }

Подскажите пожалуйста, как получить индекс искомого элемента?
P.s. Такая логика необходима для проверки удаления созданного элемента в реестре. К сожалению это можно сделать только активировав кнопку, расположенную в той же строке, что и запись в реестре.

Такой код упадёт, потому что он проверяет, что ВСЕ строки таблицы содержат текст “AutoQACategory”.

А вам нужно найти строку по тексту:

SelenideElement row = $(byTagAndText("tr", "AutoQACategory");
SelenideElement deleteButton = row.find("button.delete");
deleteButton.click();

Большое спасибо за подсказку со строкой. Мне удалось найти необходимую строку в реестре, но не получается достучаться до кнопки редактирования, которая непосредственно относится к этой строке. Для удобства, прикладываю скрин. Синим отмечена кнопка редактирования, черным непосредственно текст записи

Что значит “не получается достучаться”? Как пробовал?

Воспользовался советом и сделал следующее:
public void editButton(){
SelenideElement row = $(byTagAndText(“tr/td/span”, “AutoQACategory”));
SelenideElement editButton = row.$x("//td/i[@onclick = ‘toggleKebab(this)’]");
editButton.click();
}
При обнаружении элемента editButton возникает ошибка: Method threw ‘java.lang.IllegalArgumentException’ exception. Cannot evaluate jdk.proxy2.$Proxy11.toString()

Так же пробовал
public void editButton(){
SelenideElement row = $(byTagAndText(“tr”, “AutoQACategory”));
SelenideElement editButton = row.$x("//td/i[@onclick = ‘toggleKebab(this)’]");
editButton.click();
}

Но в таком случае строка не находится:
NoSuchElementException: no such element: Unable to locate element: {“method”:“xpath”,“selector”:".//tr/text()[normalize-space(translate(string(.), ’

  1. В таких случаях стоит скопировать полный текст ошибки IllegalArgumentException со стректрейсом. Без него ничего не могу сказать.

  2. NoSuchElementException означает ровно то, что элемента с тэгом “tr” и текстом “AutoQACategory” не существует. Исправьте локатор.

  3. Включать в xpath атрибут “onclick” точно плохая идея. Разработчики могут его поменять в любую секунду, и тест упадёт.

1 лайк