На странице есть веб-таблица, которая разбита на страницы. я хочу go через таблицу и проверить, нет ли ячейки с текстом из param - нажмите кнопку "Далее" и проверьте еще раз
Я пытался написать что-то подобное. Я написал метод, который просматривает список строк и получает текст из ячейки под указанным столбцом в каждой строке
protected GroupTableContainerComponent getContainerComponentByName(String groupCode) {
GroupTableContainerComponent result = null;
List<GroupTableContainerComponent> rows = getContainerComponents();
Iterator<GroupTableContainerComponent> i = rows.iterator();
while (i.hasNext()) {
GroupTableContainerComponent current = i.next();
if (!current.getGroupCodeText().toLowerCase().equals(groupCode.toLowerCase())) {
clickNextButton();
List<GroupTableContainerComponent> rows2 = getContainerComponents();
Iterator<GroupTableContainerComponent> j = rows2.iterator();
while (j.hasNext()){
GroupTableContainerComponent current2 = j.next();
if (current2.getGroupCodeText().toLowerCase().equals(groupCode.toLowerCase())){
}
}
}
result = current;
break;
}
if (result == null) {
throw new RuntimeException(String.format("Group with groupCode: %s not found", groupCode));
}
return result;
}
Но после нажатия следующей кнопки я получаю ошибку StaleElementReferenceException
Я думаю, это происходит потому, что мой список строк содержит старую строку с предыдущей страницы таблицы
Вот мой getContainerComponent ()
public List<GroupTableContainerComponent> getContainerComponents() {
containerComponents = new ArrayList<>();
for (WebElement current : driver.findElements(By.xpath(groupTableContainerXpath))) {
containerComponents.add(new GroupTableContainerComponent(current));
}
return containerComponents;
}
и Xpath
private final String groupTableContainerXpath = "//div[@class='table-container']/table/tbody/tr";
И мой getGroupCodeText ()
public WebElement getGroupCode() {
WebElement groupsCode = groupTableComponent.findElement(groupCode);
return groupsCode;
}
public String getGroupCodeText() {
return getGroupCode().getText();
}
и Xpath
private By groupCode = By.xpath(".//td[contains(@class,'cdk-column-group_name')]");