Нажать на кнопку сортировки и выбрать “По новизне”
Сделать паузу (3-5 сек)
Забрать комментарии в массив
Проблема в том, что когда захожу на страницу, кнопка сортировки выставлена “По умолчанию”.
Когда выбираю “По новизне”, делаю паузу и забираю комментарии, то, забираются комментарии, как будто кнопка выставлена “По умолчанию” и в массив заходят именно в этой последовательности, а нужно, чтобы по новизне были отсортированы. Проблема как я понимаю в DOM-дереве и Playwright, Selenium видят “старую” версию DOM’а, потому что данные подгрузились динамически.
Как правильно обрабатывать такие моменты? Как заставить Playwright и Selenium видеть измененную структуру HTML?
Может покажете, как вы это реализовали?
В случае с Playwright, есть прекрасная функция генерации тестов. Попробуйте составить тест с её помощью и проверить, сработает ли. Если сработает– ошибка в вашей реализации теста.
Крайне плохой вариант через паузу.
Скорее всего, проблема тут. Не исключено, что тест просто не успевает дождаться изменения.
Вам нужно вместо паузы ждать значение хедера таблицы, показывающего правильную сортировку + наличие отображённых коментов.
Попробуйте следующий фокус:
Поставьте бряк перед считыванием коментов.
Запустите тест локально.
Дождитесь, когда коменты в браузере отсортируются.
Проверьте, в какой последовательности они считываются в тесте.
Если в таком режиме всё работает - значит, моя теория насчёт паузы верна.
Если нет - Вам необходимо будет инициализировать WebElement по локатору перед считыванием коментов, а не во время загрузки страницы. Это, скорее всего, поможет убрать проблему старых данных в элементе.
@Defender прав. тут скорее всего нет проблемы с инструментом - проблема в реализации. Явные ожидания - очень плохо. Ждите чего-то более внятного- ответа с сервера, изменения заголовка таблицы.
Ради интереса глянул как это у меня реализовано в проекте - у меня фронт после всех ответов с бэкенда в финале прописывает сортировку в URL. Это для меня оказалось самым простым перехватить. На скрине ниже кусук кода Cypress, но сути дела это не меняет: