Проверка отображения динамических комментариев, как выполнить?

Пишу тесты на проверку текста и автора комментария. Возник вопрос, как правильно оформить поиск?
Структура локаторов имеет вид

.

Я попытался сделать проверку комментария типа assertCommentInTheList(Comment comment), куда передаётся сам комментарий и там производится проверка текста локаторов:

  • автора By.xpath("//div[@class=‘comment-author vcard’]");
  • текста By.tagName(“p”);

Само собой тест упал, т.к. проверял только самый первый комментарий (id = 1) из списка

Я так понимаю, что надо написать component класс, который будет отвечать за контейнер комментариев и сможет проходить по их списку.

Использую java+testng+selenium

собери все коментарии а потом в них вытягивай имена и текст, каждый комментарий как отдельный обьект и создать список таких комментов

1 лайк

Используй элементы типа:

> List<WebElement>

, один для списка авторов, второй для списка комментариев, через цикл вычисли номер элемента с нужным автором, потом используй этот номер, чтобы достать коммент данного автора и провалидировать.

1 лайк

Проще свой класс Comment сделать с двумя полями: автор, текст. И сделать список по этому классу, а автора и текст получать из объекта коммент через публичный геттер. А так логика будет размазана по двум спискам и нужно сопоставлять их между собой.

1 лайк

Спасибо всем за комментарии!
Вопрос по Comment классу…
Класс Comment присутствует. В нём есть метод, который создаёт рандомное сообщение

package data;

import utils.Environment;

public class Comment {
    private String text;
    private String name;
    public static final String E_MAIL = "test@mail.ru";

    public Comment(String text, String name) {
        this.text = text;
        this.name = name;
    }

    public static Comment createRandom() {
        String randomText = "text" + Environment.generateUniqueString();
        String randomName = "name" + Environment.generateUniqueString();
        return new Comment(randomText, randomName);
    }

    public String getText() {
        return text;
    }

    public String getName() {
        return name;
    }
}

Создать теперь элемент типа List и в цикле вычислять номер комментария?