diff --git a/Stroeva/.gitignore b/Stroeva/.gitignore new file mode 100644 index 0000000..3bac491 --- /dev/null +++ b/Stroeva/.gitignore @@ -0,0 +1,156 @@ + +# Created by https://www.gitignore.io/api/intellij,java,maven,gradle,eclipse,netbeans + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm + +*.iml +nb-configuration.xml + +## Directory-based project format: +.idea/ +.target +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries +# .idea/shelf + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + + +### Java ### +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + + +### Gradle ### +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + + +### Eclipse ### + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath + +# Eclipse Core +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +.nb-gradle/ + +*.log + +csv/ \ No newline at end of file diff --git a/Stroeva/README.md b/Stroeva/README.md new file mode 100644 index 0000000..635e81b --- /dev/null +++ b/Stroeva/README.md @@ -0,0 +1,2 @@ +Selenium WebDriver example project + diff --git a/Stroeva/pom.xml b/Stroeva/pom.xml new file mode 100644 index 0000000..756ca36 --- /dev/null +++ b/Stroeva/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + tis-2017 + tis-2017 + 1.0 + + UTF-8 + 1.8 + 1.8 + + + + + org.seleniumhq.selenium + selenium-java + 3.6.0 + + + org.junit.jupiter + junit-jupiter-api + 5.1.0-RC1 + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + true + + true + lib/ + ru.ulstu.tis.Main + + + lib/ + + + + + + + \ No newline at end of file diff --git a/Stroeva/src/main/java/ru/ulstu/tis/Main.java b/Stroeva/src/main/java/ru/ulstu/tis/Main.java new file mode 100644 index 0000000..aa6f1d2 --- /dev/null +++ b/Stroeva/src/main/java/ru/ulstu/tis/Main.java @@ -0,0 +1,8 @@ +package ru.ulstu.tis; + +public class Main { + + public static void main(String[] args) { + System.out.println("666"); + } +} diff --git a/Stroeva/src/main/resources/drivers/chromedriver b/Stroeva/src/main/resources/drivers/chromedriver new file mode 100644 index 0000000..02ff671 Binary files /dev/null and b/Stroeva/src/main/resources/drivers/chromedriver differ diff --git a/Stroeva/src/main/resources/drivers/chromedriver.exe b/Stroeva/src/main/resources/drivers/chromedriver.exe new file mode 100644 index 0000000..28a4067 Binary files /dev/null and b/Stroeva/src/main/resources/drivers/chromedriver.exe differ diff --git a/Stroeva/src/main/resources/drivers/geckodriver b/Stroeva/src/main/resources/drivers/geckodriver new file mode 100644 index 0000000..ba1da8c Binary files /dev/null and b/Stroeva/src/main/resources/drivers/geckodriver differ diff --git a/Stroeva/src/main/resources/drivers/geckodriver.exe b/Stroeva/src/main/resources/drivers/geckodriver.exe new file mode 100644 index 0000000..6208aa8 Binary files /dev/null and b/Stroeva/src/main/resources/drivers/geckodriver.exe differ diff --git a/Stroeva/src/test/java/AccountTests.java b/Stroeva/src/test/java/AccountTests.java new file mode 100644 index 0000000..bd055e1 --- /dev/null +++ b/Stroeva/src/test/java/AccountTests.java @@ -0,0 +1,94 @@ +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 AccountTests { + private final static String APP_URL = "http://amovies.cc/serials_2017/5812-mertv-na-99.html"; + + 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 testSignIn() { + context.getDriver().get(APP_URL); + LoginPage page = PageFactory.initElements(context.getDriver(), LoginPage.class); + page.login(); + Assertions.assertTrue(page.isUserPresent()); + page.clickAccUser(); + page.clickExitAccUser(); + } + + @Test + public void testSignInVK() throws InterruptedException { + context.getDriver().get(APP_URL); + LoginPage page = PageFactory.initElements(context.getDriver(), LoginPage.class); + page.clickSignIn(); + page.clickVkButton(); + VKPage pageVk = PageFactory.initElements(context.getDriver(), VKPage.class); + String str = context.getDriver().getWindowHandle(); + pageVk.switchToSocial(); + Assertions.assertTrue(pageVk.isUserPresent()); + pageVk.closeSocial(); + pageVk.switchToOld(str); + Thread.sleep(1000); + page.clickToCloseFormButton(); + } + + @Test + public void testEditAcc() throws InterruptedException { + context.getDriver().get(APP_URL); + LoginPage page = PageFactory.initElements(context.getDriver(), LoginPage.class); + page.login(); + page.clickAccUser(); + AccUserPage pageAn = PageFactory.initElements(context.getDriver(), AccUserPage.class); + pageAn.clearEmail(); + pageAn.editEmail("Test2018t@mail.ru"); + pageAn.clickToButtonSave(); + Assertions.assertTrue(pageAn.checkEmail("Test2018t@mail.ru")); + page.clickAccUser(); + page.clickExitAccUser(); + } + + @Test + public void testFavoritePage() { + context.getDriver().get(APP_URL); + LoginPage page = PageFactory.initElements(context.getDriver(), LoginPage.class); + page.login(); + page.clickAccUser(); + AccUserPage pageAn = PageFactory.initElements(context.getDriver(), AccUserPage.class); + pageAn.clickToFavorite(); + Assertions.assertTrue(pageAn.isListPage()); + page.clickAccUser(); + page.clickExitAccUser(); + } + + @Test + public void testFuturePage() { + context.getDriver().get(APP_URL); + LoginPage page = PageFactory.initElements(context.getDriver(), LoginPage.class); + page.login(); + page.clickAccUser(); + AccUserPage pageAn = PageFactory.initElements(context.getDriver(), AccUserPage.class); + pageAn.clickToFuture(); + Assertions.assertTrue(pageAn.isListPage()); + page.clickAccUser(); + page.clickExitAccUser(); + } +} diff --git a/Stroeva/src/test/java/FilterTests.java b/Stroeva/src/test/java/FilterTests.java new file mode 100644 index 0000000..764e9a3 --- /dev/null +++ b/Stroeva/src/test/java/FilterTests.java @@ -0,0 +1,61 @@ +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.By; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; +import page.*; + +public class FilterTests { + private final static String APP_URL = "http://amovies.cc/serials/"; + + 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 testSearch() { + context.getDriver().get(APP_URL); + SerialPage page = PageFactory.initElements(context.getDriver(), SerialPage.class); + page.clickSearchButton(); + page.insertSearchText("Супердевушка"); + page.insertEnterSearchText(); + SearchPage pageAn = PageFactory.initElements(context.getDriver(), SearchPage.class); + Assertions.assertTrue(pageAn.isListSearchPresent("Супердевушка")); + } + + @Test + public void testCountryList() throws InterruptedException { + context.getDriver().get(APP_URL); + SerialPage page = PageFactory.initElements(context.getDriver(), SerialPage.class); + page.clickCountry(); + Thread.sleep(2000); + page.clickSerial(); + ExSerialPage pageAn = PageFactory.initElements(context.getDriver(), ExSerialPage.class); + Assertions.assertTrue(pageAn.isCountryPresent()); + } + + @Test + public void testGenreList() throws InterruptedException { + context.getDriver().get(APP_URL); + SerialPage page = PageFactory.initElements(context.getDriver(), SerialPage.class); + page.clickGenre(); + Thread.sleep(2000); + page.clickSerial(); + ExSerialPage pageAn = PageFactory.initElements(context.getDriver(), ExSerialPage.class); + Assertions.assertTrue(pageAn.isGenrePresent()); + } +} diff --git a/Stroeva/src/test/java/NavigationTests.java b/Stroeva/src/test/java/NavigationTests.java new file mode 100644 index 0000000..a491f24 --- /dev/null +++ b/Stroeva/src/test/java/NavigationTests.java @@ -0,0 +1,94 @@ +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 NavigationTests { + private final static String APP_URL = "http://amovies.cc/"; + + 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); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickLogo(); + Assertions.assertTrue(page.isFilterPresent()); + } + + @Test + public void testFooter() { + context.getDriver().get(APP_URL); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickFooter(); + HolderPage pageAn = PageFactory.initElements(context.getDriver(), HolderPage.class); + Assertions.assertTrue(pageAn.isHolderPresent()); + } + + @Test + public void testRating() { + context.getDriver().get(APP_URL); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + String str = page.getRating(); + page.clickRating(); + NavFilterPage pageAn = PageFactory.initElements(context.getDriver(), NavFilterPage.class); + Assertions.assertTrue(pageAn.isContentPresent(str)); + } + + @Test + public void testYear() { + context.getDriver().get(APP_URL); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + String str = page.getYear(); + page.clickYear(); + NavFilterPage pageAn = PageFactory.initElements(context.getDriver(), NavFilterPage.class); + Assertions.assertTrue(pageAn.isContentPresent(str)); + } + + @Test + public void testCountry() { + context.getDriver().get(APP_URL); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + String str = page.getCountry(); + page.clickCountry(); + NavFilterPage pageAn = PageFactory.initElements(context.getDriver(), NavFilterPage.class); + Assertions.assertTrue(pageAn.isContentPresent(str)); + } + + @Test + public void testGenre() { + context.getDriver().get(APP_URL); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + String str = page.getGenre(); + page.clickGenre(); + NavFilterPage pageAn = PageFactory.initElements(context.getDriver(), NavFilterPage.class); + Assertions.assertTrue(pageAn.isContentPresent(str)); + } + + @Test + public void testMenu() { + context.getDriver().get(APP_URL); + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + String str = page.getElementMenu(); + page.clickMenu(); + NavFilterPage pageAn = PageFactory.initElements(context.getDriver(), NavFilterPage.class); + Assertions.assertTrue(pageAn.isPagePresent(str)); + } +} diff --git a/Stroeva/src/test/java/VideoTests.java b/Stroeva/src/test/java/VideoTests.java new file mode 100644 index 0000000..9675fbf --- /dev/null +++ b/Stroeva/src/test/java/VideoTests.java @@ -0,0 +1,95 @@ +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.ExSerialPage; +import page.LoginPage; +import page.SearchPage; +import page.SerialPage; + +public class VideoTests { + private final static String APP_URL = "http://amovies.cc/serials_2017/5812-mertv-na-99.html"; + + 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 testOpenFilter() { + context.getDriver().get(APP_URL); + ExSerialPage page = PageFactory.initElements(context.getDriver(), ExSerialPage.class); + String str = page.getGenre(); + page.clickGenre(); + SerialPage pageAn = PageFactory.initElements(context.getDriver(), SerialPage.class); + pageAn.clickSerial(); + Assertions.assertTrue(page.checkGenre(str)); + } + + @Test + public void testAddToFavorite() { + context.getDriver().get(APP_URL); + ExSerialPage page = PageFactory.initElements(context.getDriver(), ExSerialPage.class); + LoginPage loginPage = PageFactory.initElements(context.getDriver(), LoginPage.class); + loginPage.login(); + page.clickToFavorite(); + Assertions.assertTrue(page.isFavoritePresent()); + page.clickToFavorite(); + loginPage.clickAccUser(); + loginPage.clickExitAccUser(); + } + + @Test + public void testAddToFuture() { + context.getDriver().get(APP_URL); + ExSerialPage page = PageFactory.initElements(context.getDriver(), ExSerialPage.class); + LoginPage loginPage = PageFactory.initElements(context.getDriver(), LoginPage.class); + loginPage.login(); + page.clickToFuture(); + Assertions.assertTrue(page.isFuturePresent()); + page.clickToFuture(); + loginPage.clickAccUser(); + loginPage.clickExitAccUser(); + } + + @Test + public void testRating() { + context.getDriver().get(APP_URL); + ExSerialPage page = PageFactory.initElements(context.getDriver(), ExSerialPage.class); + LoginPage loginPage = PageFactory.initElements(context.getDriver(), LoginPage.class); + loginPage.login(); + int count = page.getRatingUpNum(); + page.clickRating(); + Assertions.assertTrue(page.getRatingUpNum() >= count ); + loginPage.clickAccUser(); + loginPage.clickExitAccUser(); + } + + @Test + public void testComment() throws InterruptedException { + context.getDriver().get(APP_URL); + ExSerialPage page = PageFactory.initElements(context.getDriver(), ExSerialPage.class); + LoginPage loginPage = PageFactory.initElements(context.getDriver(), LoginPage.class); + loginPage.login(); + page.clickCommentButton(); + page.commentWrite("Отличный фильм!"); + page.clickCommentAdd(); + Thread.sleep(2000); + Assertions.assertTrue(page.isCommentPresent()); + loginPage.clickAccUser(); + loginPage.clickExitAccUser(); + } +} diff --git a/Stroeva/src/test/java/context/ChromeContext.java b/Stroeva/src/test/java/context/ChromeContext.java new file mode 100644 index 0000000..aa8c420 --- /dev/null +++ b/Stroeva/src/test/java/context/ChromeContext.java @@ -0,0 +1,25 @@ +package context; + +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + +public class ChromeContext extends Context { + private final static String WINDOWS_DRIVER = "chromedriver.exe"; + private final static String LINUX_DRIVER = "chromedriver"; + private final static String DRIVER_TYPE = "webdriver.chrome.driver"; + + @Override + protected void createDriver() { + driver = new ChromeDriver(); + } + + @Override + protected String getDriverExecutable(boolean isWindows) { + return isWindows ? WINDOWS_DRIVER : LINUX_DRIVER; + } + + @Override + protected String getDriverType() { + return DRIVER_TYPE; + } +} diff --git a/Stroeva/src/test/java/context/Context.java b/Stroeva/src/test/java/context/Context.java new file mode 100644 index 0000000..928d5dd --- /dev/null +++ b/Stroeva/src/test/java/context/Context.java @@ -0,0 +1,43 @@ +package context; + +import org.openqa.selenium.WebDriver; + +import java.util.concurrent.TimeUnit; + +public abstract class Context { + private final static String DRIVER_LOCATION = "drivers/%s"; + protected WebDriver driver; + + public WebDriver getDriver() { + if (driver != null) { + return driver; + } + throw new IllegalStateException("WebDriver is not initialized"); + } + + public void start() { + System.setProperty(getDriverType(), getDriverExecutablePath()); + createDriver(); + // это плохая инструкция для автотестов, т.к. лучше задавать для конкретного элемента или кейса + driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); + } + + public void close() { + driver.quit(); + } + + protected abstract void createDriver(); + + protected abstract String getDriverType(); + + protected abstract String getDriverExecutable(boolean windows); + + private String getDriverExecutablePath() { + return Context.class.getClassLoader().getResource( + String.format(DRIVER_LOCATION, getDriverExecutable(isWindows()))).getFile(); + } + + private boolean isWindows() { + return System.getProperty("os.name").toLowerCase().contains("windows"); + } +} diff --git a/Stroeva/src/test/java/context/FirefoxContext.java b/Stroeva/src/test/java/context/FirefoxContext.java new file mode 100644 index 0000000..1d5c163 --- /dev/null +++ b/Stroeva/src/test/java/context/FirefoxContext.java @@ -0,0 +1,24 @@ +package context; + +import org.openqa.selenium.firefox.FirefoxDriver; + +public class FirefoxContext extends Context { + private final static String WINDOWS_DRIVER = "geckodriver.exe"; + private final static String LINUX_DRIVER = "geckodriver"; + private final static String DRIVER_TYPE = "webdriver.gecko.driver"; + + @Override + protected void createDriver() { + driver = new FirefoxDriver(); + } + + @Override + protected String getDriverExecutable(boolean isWindows) { + return isWindows ? WINDOWS_DRIVER : LINUX_DRIVER; + } + + @Override + protected String getDriverType() { + return DRIVER_TYPE; + } +} diff --git a/Stroeva/src/test/java/page/AccUserPage.java b/Stroeva/src/test/java/page/AccUserPage.java new file mode 100644 index 0000000..589b626 --- /dev/null +++ b/Stroeva/src/test/java/page/AccUserPage.java @@ -0,0 +1,57 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class AccUserPage { + WebDriver driver; + @FindBy(xpath = "//*[@id=\"userinfo\"]/div[2]/div[4]/div/div[1]/span[2]/input") + private WebElement email; + + @FindBy(css = ".submit-user") + private WebElement buttonSave; + + @FindBy(xpath = "//a[@href='/like/']") + private WebElement favoritButton; + + @FindBy(css = ".short-film") + private WebElement filmElement; + + @FindBy(xpath = "//a[@href='/tosee/']") + private WebElement futureButton; + + public AccUserPage(WebDriver driver) { + this.driver = driver; + } + + public void editEmail(String str) { + email.sendKeys(str); + } + + public void clickToButtonSave() { + buttonSave.click(); + } + + public void clickToFavorite() { + favoritButton.click(); + } + + public void clickToFuture() { + futureButton.click(); + } + + public boolean checkEmail(String str){ + if(email.getAttribute("value").equals(str)) + return true; + else return false; + } + + public void clearEmail() { + email.clear(); + } + + public boolean isListPage() { + return filmElement.isDisplayed(); + } +} diff --git a/Stroeva/src/test/java/page/ExSerialPage.java b/Stroeva/src/test/java/page/ExSerialPage.java new file mode 100644 index 0000000..574b352 --- /dev/null +++ b/Stroeva/src/test/java/page/ExSerialPage.java @@ -0,0 +1,122 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class ExSerialPage { + WebDriver driver; + + @FindBy(xpath = "//a[@href='http://amovies.cc/russia/']") + private WebElement countrySerialElement; + + @FindBy(xpath = "//a[@href='http://amovies.cc/boeviki_2018/']") + private WebElement genreSerialElement; + + @FindBy(xpath = "//*[@id=\"dle-content\"]/article/span/div[1]/div[1]/div[4]/div/div[1]/div[2]/a[1]") + private WebElement genreAnySerialElement; + + @FindBy(xpath = "//*[@id=\"dle-content\"]/article/span/div[1]/div[1]/div[4]/div/div[1]/div[2]") + private List genreListElement; + + @FindBy(id = "film-favorite") + private WebElement toFavorites; + + @FindBy(id = "film-future") + private WebElement toFuture; + + @FindBy(css = "#film-favorite.in") + private WebElement toFavoritesIn; + + @FindBy(css = "#film-future.in") + private WebElement toFutureIn; + + @FindBy(id = "rating-btn") + private WebElement rating; + + @FindBy(id = "rating-up") + private WebElement ratingUp; + + @FindBy(css = ".write-comm") + private WebElement commentButton; + + @FindBy(id = "comments") + private WebElement commentWrite; + + @FindBy(css = ".fbutton") + private WebElement commentAdd; + + @FindBy(xpath = "//a[@href='http://amovies.cc/user/test2018/']") + private WebElement checkComment; + + public ExSerialPage(WebDriver driver) { + this.driver = driver; + } + + public void clickGenre() { + genreAnySerialElement.click(); + } + + public String getGenre() { + return genreAnySerialElement.getText(); + } + + public boolean checkGenre(String genre) { + for (WebElement el: + genreListElement) { + if(el.getText().contains(genre)) + return true; + } + return false; + } + + public void clickToFavorite() { + toFavorites.click(); + } + + public void clickToFuture() { + toFuture.click(); + } + + public void clickRating() { + rating.click(); + } + + public int getRatingUpNum() { + return Integer.parseInt(ratingUp.getText()); + } + + public void clickCommentButton() { + commentButton.click(); + } + + public void commentWrite(String str) { + commentWrite.sendKeys(str); + } + + public void clickCommentAdd() { + commentAdd.click(); + } + + public boolean isCountryPresent() { + return countrySerialElement.isDisplayed(); + } + + public boolean isGenrePresent() { + return genreSerialElement.isDisplayed(); + } + + public boolean isFavoritePresent() { + return toFavoritesIn.isDisplayed(); + } + + public boolean isFuturePresent() { + return toFutureIn.isDisplayed(); + } + + public boolean isCommentPresent() { + return checkComment.isDisplayed(); + } +} diff --git a/Stroeva/src/test/java/page/HolderPage.java b/Stroeva/src/test/java/page/HolderPage.java new file mode 100644 index 0000000..4bba510 --- /dev/null +++ b/Stroeva/src/test/java/page/HolderPage.java @@ -0,0 +1,20 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class HolderPage { + WebDriver driver; + + @FindBy(css = ".box-text") + private WebElement holderElement; + + public HolderPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isHolderPresent() { + return holderElement.isDisplayed(); + } +} diff --git a/Stroeva/src/test/java/page/LoginPage.java b/Stroeva/src/test/java/page/LoginPage.java new file mode 100644 index 0000000..5c281ff --- /dev/null +++ b/Stroeva/src/test/java/page/LoginPage.java @@ -0,0 +1,82 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class LoginPage { + WebDriver driver; + + @FindBy(css = ".login") + private WebElement signIn; + + @FindBy(id = "login_name") + private WebElement login; + + @FindBy(id = "login_password") + private WebElement pass; + + @FindBy(css = ".login-button") + private WebElement buttonLogin; + + @FindBy(css = ".user") + private WebElement user; + + @FindBy(css = ".ulogin-button-vkontakte") + private WebElement vkButton; + + @FindBy(xpath = "//a[@href='/index.php?action=logout']") + private WebElement exitButton; + + @FindBy(css = ".fa.fa-times.overlay-close") + private WebElement closeFormButton; + + public LoginPage(WebDriver driver) { + this.driver = driver; + } + + public void clickSignIn() { + signIn.click(); + } + + public void insertLogin(String str) { + login.sendKeys(str); + } + + public void insertPass(String str) { + pass.sendKeys(str); + } + + public void clickToButtonLogin() { + buttonLogin.click(); + } + + public void login(){ + clickSignIn(); + insertLogin("test2018"); + insertPass("q1w2e3r4t5"); + clickToButtonLogin(); + } + + public void clickAccUser() { + user.click(); + } + + public void clickExitAccUser() { + exitButton.click(); + } + + public void clickToCloseFormButton() { + closeFormButton.click(); + } + + public boolean isUserPresent() { + return user.isDisplayed(); + } + + public void clickVkButton() { + vkButton.click(); + } +} diff --git a/Stroeva/src/test/java/page/MainPage.java b/Stroeva/src/test/java/page/MainPage.java new file mode 100644 index 0000000..9247957 --- /dev/null +++ b/Stroeva/src/test/java/page/MainPage.java @@ -0,0 +1,97 @@ +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 org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.io.Console; +import java.util.concurrent.TimeUnit; + +public class MainPage { + WebDriver driver; + + @FindBy(css = ".logo") + private WebElement logoElement; + + @FindBy(css = ".nav-filter") + private WebElement filterElement; + + @FindBy(css = ".footer-nav") + private WebElement footerElement; + + @FindBy(xpath = "//a[@href='/top/']") + private WebElement ratingElement; + + @FindBy(xpath = "//a[@href='/filmy_2018/']") + private WebElement yearElement; + + @FindBy(xpath = "//a[@href='/britain/']") + private WebElement countryElement; + + @FindBy(xpath = "//a[@href='/horror/']") + private WebElement genreElement; + + @FindBy(xpath = "//a[@href='/serials/']") + private WebElement menuElement; + + public MainPage(WebDriver driver) { + this.driver = driver; + } + + public void clickLogo() { + logoElement.click(); + } + + public void clickFooter() { + footerElement.click(); + } + + public void clickRating() { + ratingElement.click(); + } + + public void clickYear() { + yearElement.click(); + } + + public void clickCountry() { + countryElement.click(); + } + + public void clickGenre() { + genreElement.click(); + } + + public void clickMenu() { + menuElement.click(); + } + + public String getRating(){ + return ratingElement.getText(); + } + + public String getYear(){ + return yearElement.getText(); + } + + public String getCountry(){ + return countryElement.getText(); + } + + public String getGenre(){ + return genreElement.getText(); + } + + public String getElementMenu(){ + return menuElement.getText(); + } + + public boolean isFilterPresent() { + return filterElement.isDisplayed(); + } +} diff --git a/Stroeva/src/test/java/page/NavFilterPage.java b/Stroeva/src/test/java/page/NavFilterPage.java new file mode 100644 index 0000000..962697e --- /dev/null +++ b/Stroeva/src/test/java/page/NavFilterPage.java @@ -0,0 +1,24 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class NavFilterPage { + WebDriver driver; + + @FindBy(xpath = "/html/body/div[1]/div[2]/div[2]/h1") + private WebElement title; + + public NavFilterPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isPagePresent(String str) { + return driver.getTitle().toUpperCase().contains(str.toUpperCase()); + } + + public boolean isContentPresent(String str) { + return title.getText().toUpperCase().contains(str.toUpperCase()); + } +} diff --git a/Stroeva/src/test/java/page/SearchPage.java b/Stroeva/src/test/java/page/SearchPage.java new file mode 100644 index 0000000..1345127 --- /dev/null +++ b/Stroeva/src/test/java/page/SearchPage.java @@ -0,0 +1,35 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class SearchPage { + WebDriver driver; + + @FindBy(xpath = "//*[@id=\"serials\"]/div/div[2]/div[1]") + private WebElement searchElement; + + @FindBy(css = ".post-title") + private List listSearchElement; + + public SearchPage(WebDriver driver) { + this.driver = driver; + } + + public boolean isSearchPresent(String str) { + return searchElement.getText().contains(str); + } + + public boolean isListSearchPresent(String str) { + boolean bl=true; + for(int i=0; i