regard scenario 2

This commit is contained in:
Александров Александр Владимирович 2025-07-04 23:17:00 +03:00
parent 90bed51df4
commit f2c7839684
5 changed files with 42 additions and 10 deletions

View File

@ -4,3 +4,5 @@
![img_3.png](img_3.png)
"Идеальная реализация должна позволить в теории создать третий похожий сценарий с другими категориями товаров, не написав ни единой дополнительной строчки Java кода."
- такого не получилось, пришлось добавить один степ для второго сценария

View File

@ -21,6 +21,12 @@ public class CatalogPage {
categoryLink.click();
}
public void selectCategoryMainMenu(String name) {
WebElement categoryLink = wait.until(ExpectedConditions.elementToBeClickable(
By.xpath("//a/div[text()='" + name + "']")));
categoryLink.click();
}
public void closeCookieBannerIfPresent() {
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));

View File

@ -24,13 +24,6 @@ public class ListingPage {
waitForJSIdle();
}
public void selectGigabyte() {
WebElement checkbox = wait.until(ExpectedConditions.elementToBeClickable(
By.cssSelector("input[id*='Gigabyte'] + label")));
checkbox.click();
waitForJSIdle();
}
public List<WebElement> getAllProducts() {
return driver.findElements(By.cssSelector("div.Card_wrap__hES44"));
}
@ -45,4 +38,17 @@ public class ListingPage {
((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete")
);
}
public void selectManufacturer(String name) {
WebElement checkbox = wait.until(ExpectedConditions.elementToBeClickable(
By.cssSelector("input[id*='" + name + "'] + label")));
checkbox.click();
waitForJSIdle();
}
public void waitForSearchResultsToUpdate(int expectedCount) {
wait.until(driver -> getAllProducts().size() <= expectedCount);
waitForJSIdle(); // если хочешь ещё чуть-чуть гарантии
}
}

View File

@ -47,6 +47,11 @@ public class SearchSteps {
catalogPage.selectCategory(category);
}
("Выбираем раздел меню {string}")
public void chooseCategoryMainMenu(String category) {
catalogPage.selectCategoryMainMenu(category);
}
("Выбираем подраздел {string}")
public void chooseSubCategory(String sub) {
catalogPage.selectSubCategory(sub);
@ -59,9 +64,7 @@ public class SearchSteps {
("Фильтруем по производителю {string}")
public void filterByManufacturer(String name) {
if (name.equalsIgnoreCase("Gigabyte")) {
listingPage.selectGigabyte();
}
listingPage.selectManufacturer(name);
}
("Проверяем, что товаров не более {int}")

View File

@ -0,0 +1,15 @@
# language: ru
Функциональность: Поиск клавиатур с фильтрами и проверкой
Сценарий: Поиск клавиатуры A4Tech с фильтром по цене
Дано Открываем сайт regard
И Открываем меню Каталог
И Выбираем раздел меню "Периферия"
И Выбираем подраздел "Клавиатуры"
И Задаем цену от "2000"
И Фильтруем по производителю "A4Tech"
И Проверяем, что товаров не более 24
И Сохраняем наименование первого товара
И Ищем товар по сохраненному имени
Тогда На странице только один товар
И Название товара соответствует сохраненному