diff --git a/src/test/java/AccountTest.java b/src/test/java/AccountTest.java new file mode 100644 index 0000000..2e83972 --- /dev/null +++ b/src/test/java/AccountTest.java @@ -0,0 +1,42 @@ +import context.ChromeContext; +import context.Context; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; +import page.AuthPage; +import page.MainPage; + +public class AccountTest { + private final static String APP_URL_MVideo = "https://www.mvideo.ru/"; + + private static Context context; + + @BeforeAll + public static void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1366, 768)); + } + + @AfterAll + public static void quit() { + context.close(); + } + + @Test + public void testAuth() { + context.getDriver().get(APP_URL_MVideo); + String inputStringMail = "test543321@mail.ru"; + String inputStringPassword = "1234qwerQWER"; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + AuthPage pageAuth = PageFactory.initElements(context.getDriver(), AuthPage.class); + pageMain.clickAuth(); + pageAuth.setInputStrings(inputStringMail, inputStringPassword); + pageAuth.clickSubmitButton(); + Assertions.assertTrue(pageMain.isAccountPresent()); + } +} diff --git a/src/test/java/FeedbackTest.java b/src/test/java/FeedbackTest.java new file mode 100644 index 0000000..3940ab6 --- /dev/null +++ b/src/test/java/FeedbackTest.java @@ -0,0 +1,57 @@ +import context.ChromeContext; +import context.Context; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; +import page.*; + +public class FeedbackTest { + private final static String APP_URL_MVideo = "https://www.mvideo.ru/"; + + private static Context context; + + @BeforeAll + public static void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1366, 768)); + } + + @AfterAll + public static void quit() { + context.close(); + } + + @Test + public void testSubscribe() { + context.getDriver().get(APP_URL_MVideo); + String inputStringMail = "test543321@mail.ru"; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + pageMain.setEmail(inputStringMail); + pageMain.clickSubmitSub(); + Assertions.assertTrue(pageMain.isSubSuccess()); + } + + @Test + public void testLeaveReview() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageSideMenu = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + ProductPage pageProduct = PageFactory.initElements(context.getDriver(), ProductPage.class); + String eMail = "test543321@mail.ru"; + String text = "тест"; + + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageSideMenu.clickProduct(); + pageProduct.clickProductMenu(); + pageProduct.clickLeaveReviewBtn(); + pageProduct.setReviewData(eMail, text); + Assertions.assertTrue(pageProduct.isProductMenuPresent()); + } +} diff --git a/src/test/java/FiltersTest.java b/src/test/java/FiltersTest.java new file mode 100644 index 0000000..1cb4954 --- /dev/null +++ b/src/test/java/FiltersTest.java @@ -0,0 +1,206 @@ +import context.ChromeContext; +import context.Context; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; +import page.MainMenuPage; +import page.MainPage; +import page.ProductPage; +import page.SideMenuPage; + +import java.util.ArrayList; +import java.util.List; + +public class FiltersTest { + private final static String APP_URL_MVideo = "https://www.mvideo.ru/"; + + private static Context context; + List point = new ArrayList(); + + @BeforeAll + public static void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1366, 768)); + } + + @AfterAll + public static void quit() { + context.close(); + } + + @Test + public void testSearch() { + context.getDriver().get(APP_URL_MVideo); + String searchString = "Телевизор Samsung"; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + ProductPage pageProduct = PageFactory.initElements(context.getDriver(), ProductPage.class); + pageMain.setSearchString(searchString); + pageMain.clickSubmitButton(); + Assertions.assertTrue(pageProduct.isProductCorrect(searchString)); + } + + @Test + public void testProductOneCategoryOnePoint() { + context.getDriver().get(APP_URL_MVideo); + int point = 1; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageFilter.clickCategoryPoint(point); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } + + @Test + public void testProductOneCategoryTwoPoints() { + context.getDriver().get(APP_URL_MVideo); + int firstCategoryPoint = 1; + int secondCategoryPoint = 2; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + point.clear(); + point.add(firstCategoryPoint); + point.add(secondCategoryPoint); + pageFilter.clickCategoryTwoPoints(point); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } + + @Test + public void testProductTwoCategoryOnePoint() { + context.getDriver().get(APP_URL_MVideo); + int categoryPoint = 1; + int brandPoint = 2; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageFilter.clickCategoryPoint(categoryPoint); + pageFilter.clickBrandPoint(brandPoint); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } + + @Test + public void testProductTwoCategoryTwoPoints() { + context.getDriver().get(APP_URL_MVideo); + int firstCategoryPoint = 1; + int secondCategoryPoint = 2; + int firstBrandPoint = 2; + int secondBrandPoint = 4; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + point.clear(); + point.add(firstCategoryPoint); + point.add(secondCategoryPoint); + pageFilter.clickCategoryTwoPoints(point); + point.clear(); + point.add(firstBrandPoint); + point.add(secondBrandPoint); + pageFilter.clickBrandTwoPoints(point); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } + + @Test + public void testProductCombine() { + context.getDriver().get(APP_URL_MVideo); + int categoryPoint = 1; + int firstBrandPoint = 1; + int secondBrandPoint = 3; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageFilter.clickCategoryPoint(categoryPoint); + point.clear(); + point.add(firstBrandPoint); + point.add(secondBrandPoint); + pageFilter.clickBrandTwoPoints(point); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } + + @Test + public void testSort() { + context.getDriver().get(APP_URL_MVideo); + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageFilter.selectAttribute(); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } + + @Test + public void testPrice() { + context.getDriver().get(APP_URL_MVideo); + String minPriceText = "10000"; + String maxPriceText = "50000"; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageFilter.setPrice(minPriceText, maxPriceText); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } + + @Test + public void testFavorite() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageSideMenu = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + ProductPage pageProduct = PageFactory.initElements(context.getDriver(), ProductPage.class); + + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageSideMenu.clickProduct(); + pageProduct.clickFavorite(); + Assertions.assertTrue(pageProduct.isProductMenuPresent()); + } + + @Test + public void testClearCriteria() { + context.getDriver().get(APP_URL_MVideo); + int firstCategoryPoint = 1; + int secondCategoryPoint = 2; + int firstBrandPoint = 2; + int secondBrandPoint = 4; + + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageFilter = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + point.clear(); + point.add(firstCategoryPoint); + point.add(secondCategoryPoint); + pageFilter.clickCategoryTwoPoints(point); + point.clear(); + point.add(firstBrandPoint); + point.add(secondBrandPoint); + pageFilter.clickBrandTwoPoints(point); + pageFilter.clickClearBtn(); + Assertions.assertTrue(pageFilter.isProductContainsPoint()); + } +} diff --git a/src/test/java/GithubUserSearch.java b/src/test/java/GithubUserSearch.java deleted file mode 100644 index 68e7ddd..0000000 --- a/src/test/java/GithubUserSearch.java +++ /dev/null @@ -1,40 +0,0 @@ -import context.ChromeContext; -import context.Context; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.openqa.selenium.Dimension; -import org.openqa.selenium.support.PageFactory; -import page.SearchPage; - - -public class GithubUserSearch { - private final static String APP_URL = "https://github.com/"; - - private static Context context; - - @BeforeAll - public static void setup() { - context = new ChromeContext(); - context.start(); - context.getDriver().manage().window().setSize(new Dimension(1600, 900)); - } - - @AfterAll - public static void quit() { - context.close(); - } - - @Test - public void testResultPageHeader() { - context.getDriver().get(APP_URL); - String searchString = "romanov73"; - - SearchPage page = PageFactory.initElements(context.getDriver(), SearchPage.class); - page.setSearchString(searchString); - page.clickSubmitButton(); - page.clickUsersLink(); - Assertions.assertTrue(page.isUserPresent()); - } -} diff --git a/src/test/java/NavigationTest.java b/src/test/java/NavigationTest.java new file mode 100644 index 0000000..3b573e3 --- /dev/null +++ b/src/test/java/NavigationTest.java @@ -0,0 +1,121 @@ +import context.ChromeContext; +import context.Context; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; +import page.*; + +public class NavigationTest { + private final static String APP_URL_MVideo = "https://www.mvideo.ru/"; + + private static Context context; + + @BeforeAll + public static void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1366, 768)); + } + + @AfterAll + public static void quit() { + context.close(); + } + + @Test + public void testLogo() { + context.getDriver().get(APP_URL_MVideo); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + + page.clickLogo(); + Assertions.assertTrue(page.isLogoPresent()); + } + + @Test + public void testNavigationMainMenu() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + + pageMain.clickMainMenu(); + Assertions.assertTrue(pageMainMenu.isMainMenuPresent()); + } + + @Test + public void testNavigationSubMenu() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + SubMenuPage pageSubMenu = PageFactory.initElements(context.getDriver(), SubMenuPage.class); + + pageMain.clickSubMenu(); + Assertions.assertTrue(pageSubMenu.isSubMenuPresent()); + } + + @Test + public void testNavigationFooterMenu() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + FooterMenuPage pageFooter = PageFactory.initElements(context.getDriver(), FooterMenuPage.class); + + pageMain.clickFooterMenu(); + Assertions.assertTrue(pageFooter.isFooterMenuPresent()); + } + + @Test + public void testNavigationReadMore() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + ReadMorePage pageReadMore = PageFactory.initElements(context.getDriver(), ReadMorePage.class); + + pageMain.clickReadMore(); + Assertions.assertTrue(pageReadMore.isReadMorePresent()); + } + + @Test + public void testNavigationSocialLink() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + + pageMain.clickSocialLink(); + } + + @Test + public void testReviews() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + ReviewsPage pageReviews = PageFactory.initElements(context.getDriver(), ReviewsPage.class); + + pageMain.clickReviews(); + Assertions.assertTrue(pageReviews.areReviewsPresent()); + } + + @Test + public void testSideMenu() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageSideBar = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + Assertions.assertTrue(pageSideBar.isSideBarPresent()); + } + + @Test + public void testProductMenu() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + MainMenuPage pageMainMenu = PageFactory.initElements(context.getDriver(), MainMenuPage.class); + SideMenuPage pageSideMenu = PageFactory.initElements(context.getDriver(), SideMenuPage.class); + ProductPage pageProduct = PageFactory.initElements(context.getDriver(), ProductPage.class); + + pageMain.clickMainMenu(); + pageMainMenu.clickTV(); + pageSideMenu.clickProduct(); + pageProduct.clickProductMenu(); + Assertions.assertTrue(pageProduct.isProductMenuPresent()); + } +} diff --git a/src/test/java/ProductsTest.java b/src/test/java/ProductsTest.java new file mode 100644 index 0000000..b783465 --- /dev/null +++ b/src/test/java/ProductsTest.java @@ -0,0 +1,67 @@ +import context.ChromeContext; +import context.Context; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; +import page.*; + +public class ProductsTest { + private final static String APP_URL_MVideo = "https://www.mvideo.ru/"; + + private static Context context; + + @BeforeAll + public static void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1366, 768)); + } + + @AfterAll + public static void quit() { + context.close(); + } + + @Test + public void testBasketIcon() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + BasketPage pageBasket = PageFactory.initElements(context.getDriver(), BasketPage.class); + + pageMain.clickBasketIcon(); + Assertions.assertTrue(pageBasket.isBasketPagePresent()); + } + + @Test + public void testDeleteFromBaster() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + BasketPage pageBasket = PageFactory.initElements(context.getDriver(), BasketPage.class); + + pageMain.clickBasketIcon(); + pageBasket.clickDeleteSpan(); + Assertions.assertTrue(pageBasket.isBasketPagePresent()); + } + + @Test + public void testOrder() { + context.getDriver().get(APP_URL_MVideo); + MainPage pageMain = PageFactory.initElements(context.getDriver(), MainPage.class); + BasketPage pageBasket = PageFactory.initElements(context.getDriver(), BasketPage.class); + AuthPage pageAuth = PageFactory.initElements(context.getDriver(), AuthPage.class); + OrderPage pageOrder = PageFactory.initElements(context.getDriver(), OrderPage.class); + String inputStringMail = "test543321@mail.ru"; + String inputStringPhone = "9603785796"; + String inputStringName = "Антон"; + + pageMain.clickBasketIcon(); + pageBasket.clickOrder(); + pageAuth.clickSubmitBtnAuth(); + pageOrder.setInputStringsAuth(inputStringMail, inputStringPhone, inputStringName); + pageOrder.clickMakeOrderBtn(); + Assertions.assertTrue(pageOrder.isOrderPresent()); + } +} diff --git a/src/test/java/context/ChromeContext.java b/src/test/java/context/ChromeContext.java index 05d9cde..1a60718 100644 --- a/src/test/java/context/ChromeContext.java +++ b/src/test/java/context/ChromeContext.java @@ -1,6 +1,7 @@ package context; import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; public class ChromeContext extends Context { private final static String WINDOWS_DRIVER = "chromedriver.exe"; @@ -9,6 +10,8 @@ public class ChromeContext extends Context { @Override protected void createDriver() { +// ChromeOptions options = new ChromeOptions(); +// options.addArguments("--start-maximazed"); driver = new ChromeDriver(); } diff --git a/src/test/java/page/AuthPage.java b/src/test/java/page/AuthPage.java new file mode 100644 index 0000000..a21fd47 --- /dev/null +++ b/src/test/java/page/AuthPage.java @@ -0,0 +1,40 @@ +package page; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class AuthPage { + WebDriver driver; + + @FindBy(id = "frm-email") + private WebElement fieldEmail; + + @FindBy(id = "frm-password") + private WebElement fieldPass; + + @FindBy(id = "submit-button") + private WebElement submitBtn; + + @FindBy(xpath = "//*[@id=\"purchaseGuestForm\"]/input[7]") + private WebElement submitBtnAuth; + + public AuthPage(WebDriver driver) { + this.driver = driver; + } + + public AuthPage setInputStrings(String textMail, String textPass) { + fieldEmail.sendKeys(textMail); + fieldPass.sendKeys(textPass); + return this; + } + + public void clickSubmitButton() { + submitBtn.sendKeys(Keys.RETURN); + } + + public void clickSubmitBtnAuth() { + submitBtnAuth.sendKeys(Keys.RETURN); + } +} diff --git a/src/test/java/page/BasketPage.java b/src/test/java/page/BasketPage.java new file mode 100644 index 0000000..59bee85 --- /dev/null +++ b/src/test/java/page/BasketPage.java @@ -0,0 +1,37 @@ +package page; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class BasketPage { + WebDriver driver; + + public BasketPage(WebDriver driver) { + this.driver = driver; + } + + @FindBy(css = ".c-logo") + private WebElement logoIcon; + + @FindBy(css = ".c-cart-item__delete .c-link") + private WebElement deleteSpan; + + @FindBy(css = ".c-btn_full-size") + private WebElement makeOrderBtn; + + public boolean isBasketPagePresent() { return driver.getTitle().contains("Корзина"); } + + public void clickLogo() { + logoIcon.sendKeys(Keys.RETURN); + } + + public void clickDeleteSpan() { + deleteSpan.sendKeys(Keys.RETURN); + } + + public void clickOrder() { + makeOrderBtn.sendKeys(Keys.RETURN); + } +} diff --git a/src/test/java/page/FacebookPage.java b/src/test/java/page/FacebookPage.java new file mode 100644 index 0000000..b2c7084 --- /dev/null +++ b/src/test/java/page/FacebookPage.java @@ -0,0 +1,13 @@ +package page; + +import org.openqa.selenium.WebDriver; + +public class FacebookPage { + WebDriver driver; + + public FacebookPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isSocialLinkPresent() { return driver.getTitle().contains("Facebook"); } +} diff --git a/src/test/java/page/FooterMenuPage.java b/src/test/java/page/FooterMenuPage.java new file mode 100644 index 0000000..4f1e36e --- /dev/null +++ b/src/test/java/page/FooterMenuPage.java @@ -0,0 +1,16 @@ +package page; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +public class FooterMenuPage { + WebDriver driver; + + public FooterMenuPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isFooterMenuPresent() { + return driver.findElement(By.cssSelector(".lazy-load-image-holder")).isDisplayed(); + } +} diff --git a/src/test/java/page/MainMenuPage.java b/src/test/java/page/MainMenuPage.java new file mode 100644 index 0000000..719a05d --- /dev/null +++ b/src/test/java/page/MainMenuPage.java @@ -0,0 +1,23 @@ +package page; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class MainMenuPage { + WebDriver driver; + + @FindBy(css =".sidebar-category a") + private List TVs; + + public MainMenuPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isMainMenuPresent() { return driver.getTitle().contains("Телевизоры, Аудио-видео, Hi-Fi"); } + + public void clickTV() { TVs.get(0).sendKeys(Keys.RETURN); } +} diff --git a/src/test/java/page/MainPage.java b/src/test/java/page/MainPage.java new file mode 100644 index 0000000..b68a857 --- /dev/null +++ b/src/test/java/page/MainPage.java @@ -0,0 +1,127 @@ +package page; + +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class MainPage { + WebDriver driver; + + @FindBy(css = ".header-nav-item-link") + private List mainMenu; + + @FindBy(xpath = "/html/body/div[1]/div/div[2]/div/div[1]/div[7]/nav/ul/li[8]/div/div/ul[2]/li[1]/ul/li[1]/a") + private WebElement subMenu; + + @FindBy(css = ".footer-nav-link") + private List footerMenu; + + @FindBy(css = ".header-logo") + private WebElement mVideoLogo; + + @FindBy(css = ".shop-service-list .view-all-base") + private List readMore; + + @FindBy(css = ".socials-link") + private List socialLink; + + @FindBy(css = ".promo-banner-slider-info .btn") + private WebElement reviews; + + @FindBy(css = ".header-search-input") + private WebElement inputField; + + @FindBy(css = ".header-login-option-link") + private List authReg; + + @FindBy(xpath = ".//*[@id=\"js-form-submit-id\"]") + private WebElement basketIcon; + + @FindBy(id = "frm-subscr-email-address") + private WebElement inputEMail; + + @FindBy(id = "submitSubscribe") + private WebElement sbmtSubBtn; + + public MainPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isLogoPresent() { return driver.findElement(By.cssSelector(".header-logo")).isDisplayed(); } + + public boolean isAccountPresent() { + return driver.findElement(By.cssSelector(".my-account-personal-photo-placeholder")).isDisplayed(); + } + + public boolean isSubSuccess() { return driver.findElement(By.cssSelector(".text-success")).isDisplayed(); } + + public void clickMainMenu() { + mainMenu.get(1).sendKeys(Keys.RETURN); + } + + public void clickSubMenu() { + Actions builder = new Actions(driver); + builder.moveToElement(mainMenu.get(7)).perform(); + + subMenu.sendKeys(Keys.RETURN); + } + + public void clickFooterMenu() { + footerMenu.get(1).sendKeys(Keys.RETURN); + } + + public void clickLogo() { + mVideoLogo.sendKeys(Keys.RETURN); + } + + public void clickReadMore() { + readMore.get(1).sendKeys(Keys.RETURN); + } + + public void clickSocialLink() { + String base = driver.getWindowHandle(); + + socialLink.get(0).sendKeys(Keys.RETURN); + + driver.switchTo().window(base); + } + + public void clickReviews() { + reviews.sendKeys(Keys.RETURN); + } + + public MainPage setSearchString(String text) { + inputField.sendKeys(text); + return this; + } + + public void clickSubmitButton() { + inputField.sendKeys(Keys.RETURN); + } + + public void clickAuth() { + authReg.get(0).sendKeys(Keys.RETURN); + } + + public void clickReg() { + authReg.get(1).sendKeys(Keys.RETURN); + } + + public void clickBasketIcon() { + basketIcon.sendKeys(Keys.RETURN); + } + + public MainPage setEmail(String eMailText) { + inputEMail.sendKeys(eMailText); + return this; + } + + public void clickSubmitSub() { + sbmtSubBtn.sendKeys(Keys.RETURN); + } +} diff --git a/src/test/java/page/OrderPage.java b/src/test/java/page/OrderPage.java new file mode 100644 index 0000000..6128572 --- /dev/null +++ b/src/test/java/page/OrderPage.java @@ -0,0 +1,46 @@ +package page; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class OrderPage { + WebDriver driver; + + @FindBy(id = "field_8") + private WebElement fieldEmailAuth; + + @FindBy(id = "myPhone") + private WebElement fieldPhoneAuth; + + @FindBy(id = "field_6") + private WebElement fieldNameAuth; + + @FindBy(xpath = "/html/body/div[1]/div[2]/div[3]/div[2]/div/form/input[9]") + private WebElement makeOrderBtn; + + @FindBy(css = ".c-logo") + private WebElement logo; + + public OrderPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isOrderPresent() { return driver.getTitle().contains("Информация о заказе"); } + + public OrderPage setInputStringsAuth(String textMail, String textPhone, String textName) { + fieldEmailAuth.sendKeys(textMail); + fieldPhoneAuth.sendKeys(textPhone); + fieldNameAuth.sendKeys(textName); + return this; + } + + public void clickMakeOrderBtn() { + makeOrderBtn.sendKeys(Keys.RETURN); + } + + public void clickLogo() { + logo.sendKeys(Keys.RETURN); + } +} diff --git a/src/test/java/page/ProductPage.java b/src/test/java/page/ProductPage.java new file mode 100644 index 0000000..fc5affc --- /dev/null +++ b/src/test/java/page/ProductPage.java @@ -0,0 +1,61 @@ +package page; + +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class ProductPage { + WebDriver driver; + + @FindBy(css = ".c-tabs__menu .c-tabs__menu-link") + private List productMenu; + + @FindBy(css = ".c-checkbox__icon") + private WebElement favoriteSpan; + + @FindBy(css = ".product-leave-review-btn") + private WebElement leaveReviewBtn; + + @FindBy(id = "userEmail") + private WebElement inputUserName; + + @FindBy(id = "userComment") + private WebElement inputReviewText; + + @FindBy(css = ".text-cutter-wrapper") + private List titles; + + public ProductPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isProductMenuPresent() { return driver.getTitle().contains("отзывы"); } + + public boolean isProductCorrect(String searchString) { + boolean correct = true; + for (int i = 0; i < titles.size(); i++) { + if (!titles.get(i).getText().contains(searchString)) { + correct = false; + } + } + return correct; + } + + public void clickProductMenu() { + productMenu.get(2).sendKeys(Keys.RETURN); + } + + public void clickFavorite() { favoriteSpan.sendKeys(Keys.RETURN); } + + public void clickLeaveReviewBtn() { leaveReviewBtn.sendKeys(Keys.RETURN); } + + public ProductPage setReviewData(String eMailText, String reviewText) { + inputUserName.sendKeys(eMailText); + inputReviewText.sendKeys(reviewText); + return this; + } +} diff --git a/src/test/java/page/ReadMorePage.java b/src/test/java/page/ReadMorePage.java new file mode 100644 index 0000000..5392a66 --- /dev/null +++ b/src/test/java/page/ReadMorePage.java @@ -0,0 +1,13 @@ +package page; + +import org.openqa.selenium.WebDriver; + +public class ReadMorePage { + WebDriver driver; + + public ReadMorePage(WebDriver driver) { + this.driver = driver; + } + + public boolean isReadMorePresent() { return driver.getTitle().contains("Быстросервис"); } +} diff --git a/src/test/java/page/RegPage.java b/src/test/java/page/RegPage.java new file mode 100644 index 0000000..b90845d --- /dev/null +++ b/src/test/java/page/RegPage.java @@ -0,0 +1,46 @@ +package page; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class RegPage { + WebDriver driver; + + @FindBy(id = "register-form-name-input") + private WebElement inputName; + + @FindBy(id = "register-form-phone") + private WebElement inputPhone; + + @FindBy(id = "register-register-form-email-phone") + private WebElement inputEmail; + + @FindBy(id = "register-form-password") + private WebElement inputPass; + + @FindBy(id = "register-form-confirm-password") + private WebElement inputPassConfirm; + + @FindBy(css = ".add-address-submit-btn") + private WebElement submitBtn; + + public RegPage(WebDriver driver) { + this.driver = driver; + } + + public RegPage setInputStrings(String textName, String textPhone, String textEmail, String textPass, + String textPassConfirm) { + inputName.sendKeys(textName); + inputPhone.sendKeys(textPhone); + inputEmail.sendKeys(textEmail); + inputPass.sendKeys(textPass); + inputPassConfirm.sendKeys(textPassConfirm); + return this; + } + + public void clickSubmitBtn() { + submitBtn.sendKeys(Keys.RETURN); + } +} diff --git a/src/test/java/page/ReviewsPage.java b/src/test/java/page/ReviewsPage.java new file mode 100644 index 0000000..83ca062 --- /dev/null +++ b/src/test/java/page/ReviewsPage.java @@ -0,0 +1,13 @@ +package page; + +import org.openqa.selenium.WebDriver; + +public class ReviewsPage { + WebDriver driver; + + public ReviewsPage(WebDriver driver) { + this.driver = driver; + } + + public boolean areReviewsPresent() { return driver.getTitle().contains("отзывы покупателей"); } +} diff --git a/src/test/java/page/SearchPage.java b/src/test/java/page/SearchPage.java deleted file mode 100644 index 87f5b38..0000000 --- a/src/test/java/page/SearchPage.java +++ /dev/null @@ -1,38 +0,0 @@ -package page; - -import org.openqa.selenium.By; -import org.openqa.selenium.Keys; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.support.FindBy; - -public class SearchPage { - WebDriver driver; - - @FindBy(css = "input.header-search-input") - private WebElement inputField; - - @FindBy(xpath = "//*[@class='menu border']/a[7]") - private WebElement usersLink; - - public SearchPage(WebDriver driver) { - this.driver = driver; - } - - public SearchPage setSearchString(String text) { - inputField.sendKeys(text); - return this; - } - - public void clickSubmitButton() { - inputField.sendKeys(Keys.RETURN); - } - - public void clickUsersLink() { - usersLink.click(); - } - - public boolean isUserPresent() { - return driver.findElement(By.cssSelector(".user-list-info")).isDisplayed(); - } -} diff --git a/src/test/java/page/SideMenuPage.java b/src/test/java/page/SideMenuPage.java new file mode 100644 index 0000000..88431dd --- /dev/null +++ b/src/test/java/page/SideMenuPage.java @@ -0,0 +1,96 @@ +package page; + +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class SideMenuPage { + WebDriver driver; + + @FindBy(css = ".c-product-tile .sel-product-tile-title") + private List product; + + @FindBy(css = ".header-logo") + private WebElement mVideoLogo; + + @FindBy(css = ".c-plp-facets__item-link") + private List points; + + @FindBy(css = "#category-section .c-plp-facets__item-link") + private List categoryPoints; + + @FindBy(css = "#brand-section .c-plp-facets__item-link") + private List brandPoints; + + @FindBy(css = ".c-plp-facets__clear-wrapper .c-btn") + private WebElement clearBtn; + + @FindBy(css = ".o-plp-container_sub-header .select-button") + private WebElement selectBtn; + + @FindBy(css = ".drop-box a") + private List attribute; + + @FindBy(css = ".c-text-field .facet-price-min") + private WebElement priceLeft; + + @FindBy(css = ".c-text-field .facet-price-max") + private WebElement priceRight; + + public SideMenuPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isSideBarPresent() { + return driver.findElement(By.cssSelector(".c-plp-facets__item-link")).isDisplayed(); + } + + public boolean isProductContainsPoint() { + return driver.findElement(By.cssSelector(".c-product-tile__description")).isDisplayed(); + } + + public void clickProduct() { + product.get(0).sendKeys(Keys.RETURN); + } + + public void clickLogo() { + mVideoLogo.sendKeys(Keys.RETURN); + } + + public void clickCategoryPoint(int point) { categoryPoints.get(point).sendKeys(Keys.RETURN); } + + public void clickBrandPoint(int point) { brandPoints.get(point).sendKeys(Keys.RETURN); } + + public void clickCategoryTwoPoints(List point) { + for (int i = 0; i < point.size(); i++) { + categoryPoints.get(point.get(i)).sendKeys(Keys.RETURN); + } + } + + public void clickBrandTwoPoints(List point) { + for (int i = 0; i < point.size(); i++) { + brandPoints.get(point.get(i)).sendKeys(Keys.RETURN); + } + } + + public void clickClearBtn() { clearBtn.sendKeys(Keys.RETURN); } + + public void selectAttribute() { + selectBtn.sendKeys(Keys.RETURN); + attribute.get(3).sendKeys(Keys.RETURN); + } + + public SideMenuPage setPrice(String minPrice, String maxPrice) { + priceLeft.clear(); + priceLeft.sendKeys(minPrice); + priceRight.sendKeys(Keys.RETURN); + priceRight.clear(); + priceRight.sendKeys(maxPrice); + priceRight.sendKeys(Keys.RETURN); + return this; + } +} diff --git a/src/test/java/page/SubMenuPage.java b/src/test/java/page/SubMenuPage.java new file mode 100644 index 0000000..972a608 --- /dev/null +++ b/src/test/java/page/SubMenuPage.java @@ -0,0 +1,13 @@ +package page; + +import org.openqa.selenium.WebDriver; + +public class SubMenuPage { + WebDriver driver; + + public SubMenuPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isSubMenuPresent() { return driver.getTitle().contains("Фены и фен-щетки"); } +}