Привет, коллеги.
Нужна ваша помощь.
Суть теста
Есть сайт интернет-магазина. Проваливаюсь на страницу с товарами. Выставляю фильтр по платьях (тематика магазина такова), получаю n страниц выборки фильтра. В цикле получаю название лота и проверяю в нем наличие слова “Dress”, то есть проверяю, что фильтр отработал корректно. После этого кликаю по кнопке следующая страница и делаю тоже. И так до последней страницы.
Проблема
Завершить цикл. Придумал для себя такое решение. У кнопки “Дальше” есть атрибут class=pagination_next. На последней странице атрибут изменяет состояние на class=disabled pagination_next. Всё, это единственное, что меняется с этой кнопкой. НО из цикла не выходит, на последней странице атрибут меняется, но цикл продолжает работать. Хотя в консоле прописывает корректный атрибут. Короче, в коде думаю всё станет ясно.
public void test() throws InterruptedException {
RegistrationMethod obect = new RegistrationMethod(driver);
ArrayList el = new ArrayList<>();
obect.getPage(driver,linkOfPurchapsPage); //страница с товарами
obect.click(checkBoxDressFilter); //фильтр платья
outer: for (int i=0;i<50;i++) //цикл, чтобы кликнуть по странице
{
String str = driver.findElement(nextPageButton).getAttribute("class"); // получаю атрибут кнопки
if (str=="disabled pagination_next") break outer; //КАК БЫ ДОЛЖЕН ОБРЫВАТЬСЯ ЦИКЛ НО НЕТ
System.out.println(str);
Thread.sleep(2000);
el.addAll(driver.findElements(titleOfNameProduct)); //добавляю в массив название лота
for (int k=0; k<el.size(); k++) //цикл для проверки заголовка лота
{
String st = el.get(k).getText();
assertThat(st, containsString("Dress")); //каждый лот должен в имени содержать это
}
el.clear();
obect.click(nextPageButton); //СЛЕДУЮЩАЯ СТРАНИЦА
}
}
PS: Thread.sleep(); плз не комментируйте, у меня с этим отдельные счеты.