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