diff --git a/Semenova/pom.xml b/Semenova/pom.xml new file mode 100644 index 0000000..f488c6e --- /dev/null +++ b/Semenova/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + AutoTesting + AutoTesting + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.6 + 1.6 + + + + + + + + org.seleniumhq.selenium + selenium-java + LATEST + + + junit + junit + 4.12 + + + org.twitter4j + twitter4j-core + 4.0.4 + + + + \ No newline at end of file diff --git a/Semenova/src/main/java/App.java b/Semenova/src/main/java/App.java new file mode 100644 index 0000000..6f0cac1 --- /dev/null +++ b/Semenova/src/main/java/App.java @@ -0,0 +1,5 @@ +public class App { + public static void main(String[] args) { + + } +} diff --git a/Semenova/src/main/resources/drivers/chromedriver b/Semenova/src/main/resources/drivers/chromedriver new file mode 100644 index 0000000..02ff671 Binary files /dev/null and b/Semenova/src/main/resources/drivers/chromedriver differ diff --git a/Semenova/src/main/resources/drivers/chromedriver.exe b/Semenova/src/main/resources/drivers/chromedriver.exe new file mode 100644 index 0000000..28a4067 Binary files /dev/null and b/Semenova/src/main/resources/drivers/chromedriver.exe differ diff --git a/Semenova/src/test/java/CalculatorTest.java b/Semenova/src/test/java/CalculatorTest.java new file mode 100644 index 0000000..3f9220b --- /dev/null +++ b/Semenova/src/test/java/CalculatorTest.java @@ -0,0 +1,64 @@ +import Pages.CalculatorPage; +import context.ChromeContext; +import context.Context; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; + +public class CalculatorTest { + + private final static String APP_URL = "http://www.gazprom.ru/investors/stock/investor-tools/calc/"; + + private static Context context; + + @Before + public void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1600, 900)); + + context.getDriver().get(APP_URL); + } + + @After + public void quit() { + context.close(); + } + + @Test + public void countInvestor() throws InterruptedException { + System.out.println("Investor's count test"); + + + Thread.sleep(1000); + + CalculatorPage calculatorPage = PageFactory.initElements(context.getDriver(), CalculatorPage.class); + calculatorPage.switchToCalcFrame(); + + calculatorPage.insertFromDate("30.09.2011"); + calculatorPage.insertToDate("01.02.2018"); + calculatorPage.insertAmount("1"); + + calculatorPage.clickCalcBtn(); + + Thread.sleep(1000); + + double startPrice = calculatorPage.getStartPrice(); + double endPrice = calculatorPage.getEndPrice(); + double reInvPrice = calculatorPage.getReInvPrice(); + + double changePrice = calculatorPage.getChangePrice(); + double changePriceRe = calculatorPage.getChangePriceRe(); + double income = calculatorPage.getIncome(); + +// System.out.println(startPrice+"!"+endPrice+"!"+reInvPrice+"!"+changePrice+"!"+changePriceRe+"!"+income+"!"); + + + Assert.assertTrue(((double)Math.round((endPrice-startPrice) * 100))/100==income + &&((double)Math.round(income/startPrice * 100*100))/100==changePrice + &&((double)Math.round((reInvPrice-startPrice)/startPrice*100 *100))/100 ==changePriceRe); + } +} diff --git a/Semenova/src/test/java/DocumentTests.java b/Semenova/src/test/java/DocumentTests.java new file mode 100644 index 0000000..6cf9f1c --- /dev/null +++ b/Semenova/src/test/java/DocumentTests.java @@ -0,0 +1,98 @@ +import Pages.ForShareholders; +import Pages.JournalsPage; +import Pages.MainPage; +import Pages.PressPage; +import context.ChromeContext; +import context.Context; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; + +import java.io.File; + +public class DocumentTests { + + private final static String APP_URL = "http://www.gazprom.ru/"; + + private static Context context; + + private String tmpPath; + + @Before + public void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1600, 900)); + + context.getDriver().get(APP_URL); + + tmpPath = context.getTmpPath(); + } + + @After + public void quit() { + context.close(); + } + + @Test + public void downloadDocs() throws InterruptedException { + System.out.println("Downloading test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickMenuElement(1); + + ForShareholders shareholdersPage = PageFactory.initElements(context.getDriver(), ForShareholders.class); + int elementNumber = 0; + String fileName = shareholdersPage.getFileName(elementNumber); + shareholdersPage.clickDownloadLink(elementNumber); + + File f = new File(tmpPath +fileName); + System.out.println(tmpPath + fileName); + + int timeout=0; + while(!f.exists()&&timeout<100){ + Thread.sleep(500); + timeout++; + } + + Assert.assertTrue(f.exists()); + if(f.exists()) { + f.delete(); + } + } + + @Test + public void downloadJournal() throws InterruptedException { + System.out.println("Downloading journal test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickMenuElement(2); + + PressPage pressPage = PageFactory.initElements(context.getDriver(), PressPage.class); + pressPage.clickMenuElement(2); + + JournalsPage journalsPage = PageFactory.initElements(context.getDriver(), JournalsPage.class); + int elementNumber = 0; + String fileName = journalsPage.getFileName(elementNumber); + journalsPage.clickImgLink(elementNumber); + + File f = new File(tmpPath +fileName); + System.out.println(tmpPath + fileName); + + int timeout=0; + while(!f.exists()&&timeout<150){ + Thread.sleep(1000); + timeout++; + } + + Assert.assertTrue(f.exists()); + if(f.exists()) { + f.delete(); + } + + } + +} diff --git a/Semenova/src/test/java/FeedbackTests.java b/Semenova/src/test/java/FeedbackTests.java new file mode 100644 index 0000000..f470470 --- /dev/null +++ b/Semenova/src/test/java/FeedbackTests.java @@ -0,0 +1,83 @@ +import Pages.*; +import context.ChromeContext; +import context.Context; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; +import twitter4j.*; +import twitter4j.conf.ConfigurationBuilder; + +import java.util.List; + +public class FeedbackTests { + + private final static String APP_URL = "http://www.gazprom.ru/"; + + private static Context context; + + @Before + public void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1600, 900)); + + context.getDriver().get(APP_URL); + } + + @After + public void quit() { + context.close(); + } + + + @Test + public void offer() { + System.out.println("Offer test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickAdditionalMenuElement(1); + + PurchasesPage purchasesPage = PageFactory.initElements(context.getDriver(), PurchasesPage.class); + purchasesPage.clickMenuItem(10); + + FeedbackPage feedbackPage = PageFactory.initElements(context.getDriver(), FeedbackPage.class); + feedbackPage.insertEmail("test@mail.ru"); + feedbackPage.insertText("test text"); + feedbackPage.submitFeedback(); + + String output = feedbackPage.getOutput(); + + Assert.assertTrue(output.equals("Ваше сообщение отправлено.")); + } + + @Test + public void shareFunction() throws TwitterException { + System.out.println("Sharing test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickMenuElement(2); + + PressPage pressPage = PageFactory.initElements(context.getDriver(), PressPage.class); + pressPage.clickMenuElement(1); + + MediaLib mediaLib = PageFactory.initElements(context.getDriver(), MediaLib.class); + mediaLib.clickItemImage(0); + + mediaLib.clickSocialLink(2); +// String title = mediaLib.getAlbumTitle(); + + for (String winHandle : context.getDriver().getWindowHandles()) { + context.getDriver().switchTo().window(winHandle); + } + + TwitterSharingPopup twitterSharingPopup = PageFactory.initElements(context.getDriver(), TwitterSharingPopup.class); + + Assert.assertTrue(twitterSharingPopup.submitBtnPresent()); + + + } + +} diff --git a/Semenova/src/test/java/FilterTests.java b/Semenova/src/test/java/FilterTests.java new file mode 100644 index 0000000..12a5b71 --- /dev/null +++ b/Semenova/src/test/java/FilterTests.java @@ -0,0 +1,241 @@ +import Pages.*; +import context.ChromeContext; +import context.Context; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +public class FilterTests { + private final static String APP_URL = "http://www.gazprom.ru/"; + + private static Context context; + + @Before + public void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1600, 900)); + + context.getDriver().get(APP_URL); + } + + @After + public void quit() { + context.close(); + } + + @Test + public void simpleSearch() throws ParseException, InterruptedException { + System.out.println("Simple search test"); + + MainPage mainPage = PageFactory.initElements(context.getDriver(), MainPage.class); + mainPage.clickSearchBtn(); + + String queryString = "рейтинг"; + mainPage.insertSearchText(queryString); + mainPage.submitSearch(); + + SearchResultsPage searchResultsPage = PageFactory.initElements(context.getDriver(), SearchResultsPage.class); + boolean order = true; + DateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + Date datePrev = new Date(); + boolean suitable = true; + + Thread.sleep(2000); + + for (int i = 0; i < searchResultsPage.getItemsCount(); i++) { + Date dateCur = format.parse(searchResultsPage.getItemsDate(i)); + + if(dateCur.after(datePrev)) { + System.out.println(dateCur +"!"+datePrev); + order = false; + break; + } + + if(!searchResultsPage.getItemsText(i).toLowerCase().contains(queryString)){ + System.out.println("1"+searchResultsPage.getItemsText(i).toLowerCase()); + System.out.println("2"+queryString); + suitable = false; + break; + } + datePrev= dateCur; + } + + Assert.assertTrue(order&&suitable); + } + + + @Test + public void sorting() { + System.out.println("Sorting test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickMenuElement(0); + + AboutPage aboutPage = PageFactory.initElements(context.getDriver(), AboutPage.class); + aboutPage.clickMenuElement(4); + + SubsidiariesPage subsidiariesPage = PageFactory.initElements(context.getDriver(), SubsidiariesPage.class); + subsidiariesPage.clickPercentFilter(); + + boolean order = true; + + for (int i = 0; i < subsidiariesPage.getItemsPercent100Count(); i++) { + float percent = subsidiariesPage.getPartOfItemPercent100(i); +// System.out.println(percent); + if(percent!= 100.0f){ + System.out.println("!"+percent); + order = false; + break; + } + } + + for (int i = 0; i < subsidiariesPage.getItemsPercentMore50Count(); i++) { + float percent = subsidiariesPage.getPartOfItemPercentMore50(i); +// System.out.println(percent); + if(percent<= 50.0f){ + System.out.println("!"+percent); + order = false; + break; + } + } + + for (int i = 0; i < subsidiariesPage.getItemsPercentLess50Count(); i++) { + float percent = subsidiariesPage.getPartOfItemPercentLess50(i); +// System.out.println(percent); + if(percent> 50.0f){ + System.out.println("!"+percent); + order = false; + break; + } + } + + Assert.assertTrue(order); + } + + @Test + public void filteredSearch() throws ParseException, InterruptedException { + System.out.println("Filtered search test"); + + MainPage mainPage = PageFactory.initElements(context.getDriver(), MainPage.class); + mainPage.clickSearchBtn(); + + String queryString = "рейтинг"; + mainPage.insertSearchText(queryString); + mainPage.submitSearch(); + + SearchResultsPage searchResultsPage = PageFactory.initElements(context.getDriver(), SearchResultsPage.class); + searchResultsPage.setFilterOn(); + searchResultsPage.selectYear(13); + + int year = 2017; + Thread.sleep(2000); + + boolean order = true; + DateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + + Calendar calendar = new GregorianCalendar(); + + Date datePrev = new Date(); + + boolean suitable = true; + + for (int i = 0; i < searchResultsPage.getItemsCount(); i++) { + Date dateCur = format.parse(searchResultsPage.getItemsDate(i)); + + if(dateCur.after(datePrev)) { + System.out.println(dateCur +"!"+datePrev); + order = false; + break; + } + calendar.setTime(dateCur); + + if(!searchResultsPage.getItemsText(i).toLowerCase().contains(queryString)||calendar.get(Calendar.YEAR)!=year){ + System.out.println("1"+searchResultsPage.getItemsText(i).toLowerCase().contains(queryString)); + System.out.println("2"+calendar.get(Calendar.YEAR)); + suitable = false; + break; + } + } + + Assert.assertTrue(order&&suitable); + } + + @Test + public void leftMenuFilter() throws ParseException { + System.out.println("Filter by left menu test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickMenuElement(2); + + PressPage pressPage = PageFactory.initElements(context.getDriver(), PressPage.class); + pressPage.clickMenuElement(0); + + EventsPage eventsPage = PageFactory.initElements(context.getDriver(), EventsPage.class); + eventsPage.selectYear(1); + eventsPage.selectMonth(1); + + int year = 2017; + int month = 1; + boolean suitable = true; + DateFormat format = new SimpleDateFormat("d MMMM, hh:mm"); + Calendar calendar = new GregorianCalendar(); + + for (int i = 0; i < eventsPage.getResultsCount(); i++) { + Date dateCur = format.parse(eventsPage.getDateOfResult(i)); + calendar.setTime(dateCur); +// System.out.println(calendar.get(Calendar.MONTH)); + + if(calendar.get(Calendar.MONTH)!=month){ + suitable = false; + break; + } + } + + Assert.assertTrue(suitable); + } + + @Test + public void pagination() throws InterruptedException { + System.out.println("Pagination test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickAdditionalMenuElement(1); + + PurchasesPage purchasesPage = PageFactory.initElements(context.getDriver(), PurchasesPage.class); + purchasesPage.clickMenuItem(2); +// Thread.sleep(2000); + + List purchaseNumbers = new ArrayList(); + for (int i = 0; i < purchasesPage.getItemsCount(); i++) { + purchaseNumbers.add(purchasesPage.getPurchaseNumber(i)); +// System.out.println(purchasesPage.getPurchaseNumber(i)); + } + + int pageNumber = 1; + purchasesPage.clickPage(pageNumber); + Thread.sleep(2000); + + boolean turn = purchasesPage.isSelectedPage(pageNumber); + boolean found = false; + + for (int i = 0; i < purchasesPage.getItemsCount(); i++) { + if(purchaseNumbers.contains(purchasesPage.getPurchaseNumber(i))) + found=true; + +// System.out.println(purchasesPage.getPurchaseNumber(i)); + } + + Assert.assertTrue(turn&&!found); + } + + +} diff --git a/Semenova/src/test/java/MultimediaTests.java b/Semenova/src/test/java/MultimediaTests.java new file mode 100644 index 0000000..b26e298 --- /dev/null +++ b/Semenova/src/test/java/MultimediaTests.java @@ -0,0 +1,153 @@ +import Pages.AlbumPage; +import Pages.MediaLib; +import Pages.VideoPage; +import context.ChromeContext; +import context.Context; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class MultimediaTests { + + private final static String APP_URL = "http://www.gazprom.ru/press/media/"; + + private static Context context; + + @Before + public void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1600, 900)); + + context.getDriver().get(APP_URL); + } + + @After + public void quit() { + context.close(); + } + + @Test + public void albumList() throws ParseException, InterruptedException { + System.out.println("List of albums test"); + + + MediaLib mediaLib = PageFactory.initElements(context.getDriver(), MediaLib.class); + mediaLib.selectMonth(1); +// Thread.sleep(2000); + + boolean order = true; + DateFormat format = new SimpleDateFormat("yyyy.M.d H:m"); + Date datePrev = format.parse(mediaLib.getDateOfItem(0)); + + for (int i = 1; i < mediaLib.getItemsCount(); i++) { + Date dateCur = format.parse(mediaLib.getDateOfItem(i)); + if(dateCur.after(datePrev)) { + System.out.println(dateCur+"!"+datePrev); + order = false; + break; + } + datePrev = dateCur; + } + + Assert.assertTrue(order); + } + + @Test + public void photoList() { + System.out.println("List of photos test"); + + MediaLib mediaLib = PageFactory.initElements(context.getDriver(), MediaLib.class); + int elementNumber = 0; + String preview = mediaLib.getItemImageName(elementNumber); + mediaLib.clickItemImage(elementNumber); + System.out.println(preview); + + AlbumPage albumPage = PageFactory.initElements(context.getDriver(), AlbumPage.class); + + boolean containsPreview = false; + for (int i = 0; i < albumPage.getImagesCount(); i++) { + String previewCur = albumPage.getImageName(i); + + if(preview.equals(previewCur)) { + containsPreview = true; + System.out.println(previewCur); + } + } + Assert.assertTrue(containsPreview); + + } + + @Test + public void photosView() throws InterruptedException { + System.out.println("View of photos test"); + + MediaLib mediaLib = PageFactory.initElements(context.getDriver(), MediaLib.class); + mediaLib.clickItemImage(0); + + AlbumPage albumPage = PageFactory.initElements(context.getDriver(), AlbumPage.class); + albumPage.clickPhotoLink(0); + + Thread.sleep(2000); + + int elementNumber = 1; + albumPage.clickPhotoPopup(elementNumber); + Assert.assertTrue(albumPage.isSelectedPhoto(elementNumber)); + + } + + @Test + public void videoList() throws ParseException, InterruptedException { + System.out.println("List of video test"); + + MediaLib mediaLib = PageFactory.initElements(context.getDriver(), MediaLib.class); + mediaLib.clickVideoFilter(); + +// Thread.sleep(1000); + + boolean order = true; + DateFormat format = new SimpleDateFormat("yyyy.M.d H:m"); + Date datePrev = format.parse(mediaLib.getDateOfItem(0)); + for (int i = 1; i < mediaLib.getItemsCount(); i++) { + Date dateCur = format.parse(mediaLib.getDateOfItem(i)); + System.out.println(dateCur); + if(dateCur.after(datePrev)) { + order = false; + break; + } + } + + Assert.assertTrue(order); + } + + @Test + public void videoPage () throws InterruptedException { + System.out.println("Page with video test"); + + MediaLib mediaLibPhoto = PageFactory.initElements(context.getDriver(), MediaLib.class); + mediaLibPhoto.clickVideoFilter(); + + MediaLib mediaLibVideo = PageFactory.initElements(context.getDriver(), MediaLib.class); + +// Thread.sleep(3000); + + + int elementNumber = 0; + String title = mediaLibVideo.getItemTitle(elementNumber); + mediaLibVideo.clickItem(elementNumber); + + VideoPage videoPage = PageFactory.initElements(context.getDriver(), VideoPage.class); + + Assert.assertTrue(videoPage.getVideoTitle().equals(title)); + } + + +} diff --git a/Semenova/src/test/java/NavigationTests.java b/Semenova/src/test/java/NavigationTests.java new file mode 100644 index 0000000..0b05b49 --- /dev/null +++ b/Semenova/src/test/java/NavigationTests.java @@ -0,0 +1,113 @@ +import Pages.*; +import context.ChromeContext; +import context.Context; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.support.PageFactory; + +import java.util.ArrayList; + +public class NavigationTests { + + private final static String APP_URL = "http://www.gazprom.ru/"; + + private static Context context; + + @Before + public void setup() { + context = new ChromeContext(); + context.start(); + context.getDriver().manage().window().setSize(new Dimension(1600, 900)); + + context.getDriver().get(APP_URL); + } + + @After + public void quit() { + context.close(); + } + + @Test + public void topMenuTest() { + System.out.println("Top menu test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + int elementNumber = 2; + String title = page.getTitleMenuElement(elementNumber); + page.clickMenuElement(elementNumber); + + PressPage pressPage = PageFactory.initElements(context.getDriver(), PressPage.class); + + Assert.assertTrue(pressPage.getTitle().contains(title)); + } + @Test + public void subMenu(){ + System.out.println("Sub menu test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickMenuElement(0); + + PressPage pressPage = PageFactory.initElements(context.getDriver(), PressPage.class); + int elementNumber = 1; + String title = pressPage.getTitleMenuElement(elementNumber); + pressPage.clickMenuElement(elementNumber); + + MediaLib mediaLib = PageFactory.initElements(context.getDriver(), MediaLib.class); + + Assert.assertTrue(mediaLib.getTitle().contains(title)); + } + + @Test + public void hyperlinks(){ + System.out.println("Hyperlinks test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickMenuElement(0); + + AboutPage aboutPage = PageFactory.initElements(context.getDriver(), AboutPage.class); + + int elementNumber = 0; + String title = aboutPage.getTextHyperlinksElement(elementNumber); + aboutPage.clickHyperlinksElement(elementNumber); + + MiningPage miningPage = PageFactory.initElements(context.getDriver(), MiningPage.class); + + Assert.assertTrue(miningPage.getTitle().toLowerCase().contains(title)); + } + + @Test + public void sideMenu() { + System.out.println("Side menu test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickLayButton(); + + int elementNumber = 3; + String title = page.getTitleLayMenuElement(elementNumber); + page.clickLayMenuElement(elementNumber); + + MarketingPage marketingPage = PageFactory.initElements(context.getDriver(), MarketingPage.class); + + Assert.assertTrue(marketingPage.getTitle().contains(title)); + } + + @Test + public void externalLinks() throws InterruptedException { + System.out.println("External links test"); + + MainPage page = PageFactory.initElements(context.getDriver(), MainPage.class); + page.clickExternalSitesBtn(); + + int elementNumber = 0; + String title = page.getTitleExternalLink(elementNumber); + page.clickExternalLink(elementNumber); + + ArrayList tabs2 = new ArrayList (context.getDriver().getWindowHandles()); + context.getDriver().switchTo().window(tabs2.get(1)); + + Assert.assertTrue(context.getDriver().getTitle().contains(title)); + } +} diff --git a/Semenova/src/test/java/Pages/AboutPage.java b/Semenova/src/test/java/Pages/AboutPage.java new file mode 100644 index 0000000..ece6a0b --- /dev/null +++ b/Semenova/src/test/java/Pages/AboutPage.java @@ -0,0 +1,35 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class AboutPage { + private WebDriver driver; + + @FindBy(css = ".content_wrapper a") + private List hyperlinkElements; + + @FindBy(css = ".subnavigation li") + private List subMenuElements; + + public AboutPage(WebDriver driver) { + this.driver = driver; + } + + public void clickHyperlinksElement(int elementNumber){ + hyperlinkElements.get(elementNumber).click(); + } + + public String getTextHyperlinksElement(int elementNumber){ + return hyperlinkElements.get(elementNumber).getText(); + } + + public void clickMenuElement(int elementNumber){ + subMenuElements.get(elementNumber).click(); + } + +} diff --git a/Semenova/src/test/java/Pages/AlbumPage.java b/Semenova/src/test/java/Pages/AlbumPage.java new file mode 100644 index 0000000..4fc3373 --- /dev/null +++ b/Semenova/src/test/java/Pages/AlbumPage.java @@ -0,0 +1,54 @@ +package Pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class AlbumPage { + + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".media__list .media__item img") + private List albumImages; + + @FindBy(css = ".media__popup__thumbs .media__popup__thumb") + private List photosPopup; + + public AlbumPage(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public String getImageName(int elementNumber){ + String imageName = albumImages.get(elementNumber).getAttribute("src"); + imageName = imageName.substring(imageName.lastIndexOf("/")+1); + if(imageName.contains("_")) + imageName = imageName.substring(imageName.lastIndexOf("_")+1); + + return imageName; + } + + public int getImagesCount(){ + return albumImages.size(); + } + + public void clickPhotoLink(int elementNumber) { + wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("media__item"))); + albumImages.get(elementNumber).click(); + } + + public void clickPhotoPopup(int elementNumber) { + wait.until(ExpectedConditions.visibilityOfAllElements(photosPopup.get(elementNumber))); + photosPopup.get(elementNumber).click(); + } + + public boolean isSelectedPhoto(int elementNumber){ + return photosPopup.get(elementNumber).getAttribute("class").contains("media__popup__thumb--selected"); + } +} diff --git a/Semenova/src/test/java/Pages/CalculatorPage.java b/Semenova/src/test/java/Pages/CalculatorPage.java new file mode 100644 index 0000000..811280a --- /dev/null +++ b/Semenova/src/test/java/Pages/CalculatorPage.java @@ -0,0 +1,130 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class CalculatorPage { + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".tbl_box #fromDate") + private WebElement fromDateInput; + + @FindBy(css = ".tbl_box #toDate") + private WebElement toDateInput; + + @FindBy(css = ".tbl_box #amountOfShares") + private WebElement amountInput; + + @FindBy(css = ".tbl_box table tr:nth-child(8) input") + private WebElement calculateBtn; + + @FindBy(css = ".result tr") + private List tableElements; + + @FindBy(css = ".result tr:nth-child(11) td:nth-child(2)") + private WebElement startPrice; + + @FindBy(css = ".result tr:nth-child(12) td:nth-child(2)") + private WebElement endPrice; + + @FindBy(css = ".result tr:nth-child(13) td:nth-child(3)") + private WebElement reInvPrice; + + @FindBy(css = ".result tr:nth-child(3) td:nth-child(2)") + private WebElement changePrice; + + @FindBy(css = ".result tr:nth-child(7) td:nth-child(2)") + private WebElement changePriceRe; + + @FindBy(css = ".result tr:nth-child(1) span") + private WebElement income; + + @FindBy(id = "ruCalc") + private WebElement ruCalcFrame; + + @FindBy(name = "chart") + private WebElement chartFrame; + + public CalculatorPage(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public void switchToCalcFrame(){ + wait.until(ExpectedConditions.visibilityOfAllElements(ruCalcFrame)); + driver.switchTo().frame(ruCalcFrame); + driver.switchTo().frame(chartFrame); + } + + public void clickCalcBtn(){ + calculateBtn.click(); + } + + public double getStartPrice(){ + + wait.until(ExpectedConditions.visibilityOfAllElements(startPrice)); + + String tmp = startPrice.getText(); + tmp = tmp.substring(0,tmp.lastIndexOf(" ")+1); + return Double.parseDouble(tmp.replace(",",".").replace(" ","")); + } + + public double getEndPrice(){ + wait.until(ExpectedConditions.visibilityOfAllElements(endPrice)); + String tmp = endPrice.getText(); + tmp = tmp.substring(0,tmp.lastIndexOf(" ")+1); + return Double.parseDouble(tmp.replace(",",".").replace(" ","")); + } + + public double getReInvPrice(){ + wait.until(ExpectedConditions.visibilityOfAllElements(reInvPrice)); + String tmp = reInvPrice.getText(); + tmp = tmp.substring(0,tmp.lastIndexOf(" ")+1); + return Double.parseDouble(tmp.replace(",",".").replace(" ","")); + } + + public double getChangePrice(){ + wait.until(ExpectedConditions.visibilityOfAllElements(changePrice)); + String tmp = changePrice.getText(); + tmp = tmp.substring(0,tmp.lastIndexOf("%")); + return Double.parseDouble(tmp.replace(",",".").replace(" ","")); + } + + public double getChangePriceRe(){ + wait.until(ExpectedConditions.visibilityOfAllElements(changePriceRe)); + String tmp = changePriceRe.getText(); + tmp = tmp.substring(0,tmp.lastIndexOf("%")); + return Double.parseDouble(tmp.replace(",",".").replace(" ","")); + } + + public double getIncome(){ + wait.until(ExpectedConditions.visibilityOfAllElements(income)); + String tmp = income.getText(); + return Double.parseDouble(tmp.replace(",",".").replace(" ","")); + } + + public void insertFromDate(String text){ + wait.until(ExpectedConditions.visibilityOfAllElements(fromDateInput)); + fromDateInput.clear(); + fromDateInput.sendKeys(text); + } + + public void insertToDate(String text){ + wait.until(ExpectedConditions.visibilityOfAllElements(toDateInput)); + toDateInput.clear(); + toDateInput.sendKeys(text); + } + + public void insertAmount(String text){ + wait.until(ExpectedConditions.visibilityOfAllElements(amountInput)); + amountInput.clear(); + amountInput.sendKeys(text); + } + +} diff --git a/Semenova/src/test/java/Pages/EventsPage.java b/Semenova/src/test/java/Pages/EventsPage.java new file mode 100644 index 0000000..0d39bc1 --- /dev/null +++ b/Semenova/src/test/java/Pages/EventsPage.java @@ -0,0 +1,42 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class EventsPage { + + private WebDriver driver; + + @FindBy(css = ".years-navigation li") + private List yearsFilter; + + @FindBy(css = ".years-navigation__months li") + private List monthFilter; + + @FindBy(css = ".news-list li .date") + private List searchResultsDates; + + public EventsPage (WebDriver driver) { + this.driver = driver; + } + + public void selectYear(int itemNumber){ + yearsFilter.get(itemNumber).click(); + } + + public void selectMonth(int itemNumber){ + monthFilter.get(itemNumber).click(); + } + + public String getDateOfResult(int itemNumber){ + return searchResultsDates.get(itemNumber).getText(); + } + + public int getResultsCount(){ + return searchResultsDates.size(); + } + +} diff --git a/Semenova/src/test/java/Pages/FeedbackPage.java b/Semenova/src/test/java/Pages/FeedbackPage.java new file mode 100644 index 0000000..ced6282 --- /dev/null +++ b/Semenova/src/test/java/Pages/FeedbackPage.java @@ -0,0 +1,49 @@ +package Pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + + +public class FeedbackPage { + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(id = "email") + private WebElement emailInput; + + @FindBy(id = "text") + private WebElement textInput; + + @FindBy(id = "btnSubmit") + private WebElement btnSubmit; + + @FindBy(id = "output") + private WebElement output; + + public FeedbackPage(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public void insertEmail(String email){ + emailInput.sendKeys(email); + } + + public void insertText(String text){ + textInput.sendKeys(text); + } + + public void submitFeedback(){ + btnSubmit.click(); + } + + public String getOutput(){ + wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("output"))); + + return output.getText(); + } +} diff --git a/Semenova/src/test/java/Pages/ForShareholders.java b/Semenova/src/test/java/Pages/ForShareholders.java new file mode 100644 index 0000000..93b3254 --- /dev/null +++ b/Semenova/src/test/java/Pages/ForShareholders.java @@ -0,0 +1,35 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.List; + +public class ForShareholders { + private WebDriver driver; + + @FindBy(css = ".reports_cont .file a") + private List downloadLinks; + + @FindBy(css = ".subnavigation li") + private List subMenuElements; + + public ForShareholders(WebDriver driver) { + this.driver = driver; + } + + public String getFileName(int elementNumber){ + String fileName = downloadLinks.get(elementNumber).getAttribute("href"); + fileName = fileName.substring(fileName.lastIndexOf("/")+1); + return fileName; + } + + public void clickDownloadLink(int elementNumber){ + downloadLinks.get(elementNumber).click(); + } + + public void clickMenuElement(int elementNumber){ + subMenuElements.get(elementNumber).click(); + } +} diff --git a/Semenova/src/test/java/Pages/JournalsPage.java b/Semenova/src/test/java/Pages/JournalsPage.java new file mode 100644 index 0000000..3adb9c1 --- /dev/null +++ b/Semenova/src/test/java/Pages/JournalsPage.java @@ -0,0 +1,36 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class JournalsPage { + + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".journals__img-link") + private List imgLinks; + + + public JournalsPage(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public void clickImgLink(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfAllElements(imgLinks)); + imgLinks.get(elementNumber).click(); + } + + public String getFileName(int elementNumber){ + String fileName = imgLinks.get(elementNumber).getAttribute("href"); + fileName = fileName.substring(fileName.lastIndexOf("/")+1); + return fileName; + } + +} diff --git a/Semenova/src/test/java/Pages/MainPage.java b/Semenova/src/test/java/Pages/MainPage.java new file mode 100644 index 0000000..ae23fa8 --- /dev/null +++ b/Semenova/src/test/java/Pages/MainPage.java @@ -0,0 +1,97 @@ +package Pages; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class MainPage { + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".navigation li") + private List menuElements; + + @FindBy(css = ".lay_button") + private WebElement layButton; + + @FindBy(css = ".menu-map__col a") + private List layMenuElements; + + @FindBy(id = "sites_link") + private WebElement externalSitesBtn; + + @FindBy(css = "#sites_list .column_wrapper a") + private List externalLinks; + + @FindBy(css = ".main_menu_search") + private WebElement searchBtn; + + @FindBy(id = "search-field__query") + private WebElement searchField; + + @FindBy(css = ".additional_top_navigation a") + private List additionalMenu; + + public MainPage(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public void clickMenuElement(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfAllElements(menuElements)); + menuElements.get(elementNumber).click(); + } + + public String getTitleMenuElement(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfAllElements(menuElements)); + return menuElements.get(elementNumber).getText(); + } + + public void clickLayButton(){ + layButton.click(); + } + + public void clickLayMenuElement(int elementNumber){ + layMenuElements.get(elementNumber).click(); + } + + public String getTitleLayMenuElement(int elementNumber){ + return layMenuElements.get(elementNumber).getText(); + } + + public void clickExternalSitesBtn(){ + externalSitesBtn.click(); + } + + public void clickExternalLink(int elementNumber) { + wait.until(ExpectedConditions.visibilityOfAllElements(externalLinks.get(elementNumber))); + externalLinks.get(elementNumber).click(); + } + + public String getTitleExternalLink(int elementNumber) { + wait.until(ExpectedConditions.visibilityOfAllElements(externalLinks.get(elementNumber))); + + return externalLinks.get(elementNumber).getText(); + } + + public void clickSearchBtn(){ + searchBtn.click(); + } + + public void insertSearchText(String text){ + searchField.sendKeys(text); + } + + public void submitSearch(){ + searchField.sendKeys(Keys.RETURN); + } + + public void clickAdditionalMenuElement(int elementNumber){ + additionalMenu.get(elementNumber).click(); + } +} diff --git a/Semenova/src/test/java/Pages/MarketingPage.java b/Semenova/src/test/java/Pages/MarketingPage.java new file mode 100644 index 0000000..79c8b71 --- /dev/null +++ b/Semenova/src/test/java/Pages/MarketingPage.java @@ -0,0 +1,18 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.ui.WebDriverWait; + +public class MarketingPage { + private WebDriver driver; + + + public MarketingPage(WebDriver driver) { + this.driver = driver; + } + + public String getTitle(){ + return driver.getTitle(); + } + +} diff --git a/Semenova/src/test/java/Pages/MediaLib.java b/Semenova/src/test/java/Pages/MediaLib.java new file mode 100644 index 0000000..34b34ed --- /dev/null +++ b/Semenova/src/test/java/Pages/MediaLib.java @@ -0,0 +1,95 @@ +package Pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class MediaLib { + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".media__list:first-child .media__item .media__date:first-child") + private List itemsDates; + + @FindBy(css = ".media__list:first-child .media__item .media__name a") + private List itemsTitles; + + @FindBy(css = ".media__list:first-child .media__item a:first-child") + private List itemsLinks; + + @FindBy(css = ".media__list:first-child .media__item a:first-child img") + private List albumsImages; + + @FindBy(css = ".content__filter a") + private List contentFilter; + + @FindBy(css = ".years-navigation__months li") + private List monthFilter; + + @FindBy(css = ".media__popup__social span") + private List socialLinks; + + @FindBy(css = ".h1--semi-margin-bottom") + private WebElement albumTitle; + + public MediaLib(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,10,500); + } + + public String getTitle(){ + return driver.getTitle(); + } + + public String getDateOfItem(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfAllElements(itemsDates.get(elementNumber))); + return itemsDates.get(elementNumber).getAttribute("value"); + } + + public int getItemsCount(){ + return itemsDates.size(); + } + + public void clickItemImage(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("media__item"))); + albumsImages.get(elementNumber).click(); + } + + public String getItemImageName(int elementNumber){ + String preview = albumsImages.get(elementNumber).getAttribute("src"); + preview = preview.substring(preview.lastIndexOf("_")+1); + + return preview; + } + + public void clickVideoFilter() { + contentFilter.get(0).click(); + } + + public String getItemTitle(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfAllElements(itemsTitles.get(elementNumber))); + return itemsTitles.get(elementNumber).getText(); + } + + public void clickItem(int elementNumber){ + itemsLinks.get(elementNumber).click(); + } + + public void selectMonth(int itemNumber){ + monthFilter.get(itemNumber).click(); + } + + public void clickSocialLink(int itemNumber){ + socialLinks.get(itemNumber).click(); + } + + public String getAlbumTitle(){ + return albumTitle.getText(); + } + +} diff --git a/Semenova/src/test/java/Pages/MiningPage.java b/Semenova/src/test/java/Pages/MiningPage.java new file mode 100644 index 0000000..5465f3e --- /dev/null +++ b/Semenova/src/test/java/Pages/MiningPage.java @@ -0,0 +1,18 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.ui.WebDriverWait; + +public class MiningPage { + private WebDriver driver; + + + public MiningPage(WebDriver driver) { + this.driver = driver; + } + + public String getTitle(){ + return driver.getTitle(); + } + +} diff --git a/Semenova/src/test/java/Pages/PressPage.java b/Semenova/src/test/java/Pages/PressPage.java new file mode 100644 index 0000000..7b68a39 --- /dev/null +++ b/Semenova/src/test/java/Pages/PressPage.java @@ -0,0 +1,39 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class PressPage { + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".subnavigation li") + private List menuElements; + + public PressPage(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public String getTitle(){ + return driver.getTitle(); + } + + public void clickMenuElement(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfAllElements(menuElements)); + menuElements.get(elementNumber).click(); + } + + public String getTitleMenuElement(int elementNumber){ + wait.until(ExpectedConditions.visibilityOfAllElements(menuElements)); + return menuElements.get(elementNumber).getText(); + } + + + +} diff --git a/Semenova/src/test/java/Pages/PurchasesPage.java b/Semenova/src/test/java/Pages/PurchasesPage.java new file mode 100644 index 0000000..0919da0 --- /dev/null +++ b/Semenova/src/test/java/Pages/PurchasesPage.java @@ -0,0 +1,52 @@ +package Pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class PurchasesPage { + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".subnavigation a") + private List menuElements; + + @FindBy(css = ".text_data tbody tr") + private List searchResults; + + @FindBy(css = ".text_data tbody tr td:nth-child(2) p:first-child span") + private List purchasesNumbers; + + @FindBy(css = ".dataTables_paginate span") + private List paginationElements; + + public PurchasesPage(WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public void clickMenuItem(int itemNumber){ + menuElements.get(itemNumber).click(); + } + + public String getPurchaseNumber(int itemNumber){ + return purchasesNumbers.get(itemNumber).getText(); + } + + public int getItemsCount(){ + return searchResults.size(); + } + + public void clickPage(int pageNumber){ + paginationElements.get(pageNumber).click(); + } + + public boolean isSelectedPage(int pageNumber){ + return paginationElements.get(pageNumber).getAttribute("class").equals("paginate_active"); + } +} diff --git a/Semenova/src/test/java/Pages/SearchResultsPage.java b/Semenova/src/test/java/Pages/SearchResultsPage.java new file mode 100644 index 0000000..a7fd310 --- /dev/null +++ b/Semenova/src/test/java/Pages/SearchResultsPage.java @@ -0,0 +1,54 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class SearchResultsPage { + + private WebDriverWait wait; + private WebDriver driver; + + @FindBy(css = ".search_results .search_results__item[data-ng-repeat='item in searchResults'] .search_results__date") + private List searchResultsDates; + + @FindBy(css = ".search_results .search_results__item[data-ng-repeat='item in searchResults'] .search_results__text") + private List searchResultsTexts; + + @FindBy(css = ".toggle span") + private WebElement filterOn; + + @FindBy(css = ".search__tags--years .tag-button") + private List yearsFilter; + + public SearchResultsPage (WebDriver driver) { + this.driver = driver; + wait = new WebDriverWait(driver,30,500); + } + + public String getItemsText(int itemNumber){ + return searchResultsTexts.get(itemNumber).getText(); + } + + public String getItemsDate(int itemNumber){ + return searchResultsDates.get(itemNumber).getAttribute("value"); + } + + public int getItemsCount(){ + + wait.until(ExpectedConditions.visibilityOfAllElements(searchResultsTexts)); + return searchResultsTexts.size(); + } + + public void setFilterOn(){ + filterOn.click(); + } + + public void selectYear(int itemNumber){ + yearsFilter.get(itemNumber).click(); + } +} diff --git a/Semenova/src/test/java/Pages/SubsidiariesPage.java b/Semenova/src/test/java/Pages/SubsidiariesPage.java new file mode 100644 index 0000000..8a42330 --- /dev/null +++ b/Semenova/src/test/java/Pages/SubsidiariesPage.java @@ -0,0 +1,58 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class SubsidiariesPage { + private WebDriver driver; + + @FindBy(css = ".filters p *") + private List filtersLinks; + + @FindBy(css = ".company_list ul:nth-child(2) .gazprom_part") + private List itemsPercent100; + + @FindBy(css = ".company_list ul:nth-child(6) .gazprom_part") + private List itemsPercentMore50; + + @FindBy(css = ".company_list ul:nth-child(8) .gazprom_part") + private List itemsPercentLess50; + + public SubsidiariesPage(WebDriver driver) { + this.driver = driver; + } + + public void clickPercentFilter(){ + filtersLinks.get(1).click(); + } + + public int getItemsPercent100Count(){ + return itemsPercent100.size(); + } + + public int getItemsPercentMore50Count(){ + return itemsPercentMore50.size(); + } + public int getItemsPercentLess50Count(){ + return itemsPercentLess50.size(); + } + + public float getPartOfItemPercent100(int itemNumber){ + String per = itemsPercent100.get(itemNumber).getText().split("%")[0]; + return Float.parseFloat(per.substring(per.lastIndexOf(" ")+1).replace(",",".")); + } + + public float getPartOfItemPercentMore50(int itemNumber){ + String per = itemsPercentMore50.get(itemNumber).getText().split("%")[0]; + return Float.parseFloat(per.substring(per.lastIndexOf(" ")+1).replace(",",".")); + } + + public float getPartOfItemPercentLess50(int itemNumber){ + String per = itemsPercentLess50.get(itemNumber).getText().split("%")[0]; + return Float.parseFloat(per.substring(per.lastIndexOf(" ")+1).replace(",",".")); + } +} diff --git a/Semenova/src/test/java/Pages/TwitterSharingPopup.java b/Semenova/src/test/java/Pages/TwitterSharingPopup.java new file mode 100644 index 0000000..5d3a3fa --- /dev/null +++ b/Semenova/src/test/java/Pages/TwitterSharingPopup.java @@ -0,0 +1,38 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class TwitterSharingPopup { + private WebDriver driver; + + @FindBy(id = "username_or_email") + private WebElement usernameInput; + + @FindBy(id = "password") + private WebElement passInput; + + @FindBy(css = ".submit") + private WebElement submitBtn; + + public TwitterSharingPopup(WebDriver driver) { + this.driver = driver; + } + + public void insertUsername(String username){ + usernameInput.sendKeys(username); + } + + public void insertPassword(String password){ + passInput.sendKeys(password); + } + + public void clickSubmit(){ + submitBtn.click(); + } + + public boolean submitBtnPresent(){ + return submitBtn.isDisplayed(); + } +} diff --git a/Semenova/src/test/java/Pages/VideoPage.java b/Semenova/src/test/java/Pages/VideoPage.java new file mode 100644 index 0000000..9bb015f --- /dev/null +++ b/Semenova/src/test/java/Pages/VideoPage.java @@ -0,0 +1,33 @@ +package Pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.util.List; + +public class VideoPage { + + private WebDriver driver; + + @FindBy(css = ".media__list .media__item img") + private List albumImages; + + @FindBy(css = ".media__popup__thumbs .media__popup__thumb") + private List photosPopup; + + @FindBy(css = ".media_filter h1") + private WebElement videoTitle; + + public VideoPage(WebDriver driver) { + this.driver = driver; + } + public String getTitle(){ + return driver.getTitle(); + } + + public String getVideoTitle(){ + return videoTitle.getText(); + } +} diff --git a/Semenova/src/test/java/context/ChromeContext.java b/Semenova/src/test/java/context/ChromeContext.java new file mode 100644 index 0000000..71dc411 --- /dev/null +++ b/Semenova/src/test/java/context/ChromeContext.java @@ -0,0 +1,40 @@ +package context; + +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; + +import java.util.HashMap; +import java.util.Map; + +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() { + ChromeOptions options = new ChromeOptions(); + Map prefs = new HashMap(); + prefs.put("plugins.always_open_pdf_externally", true); +// tmpPath = System.getProperty("java.io.tmpdir"); + + tmpPath = System.getProperty("user.dir") + "/src/main/resources/downloads/"; + + prefs.put("download.default_directory", tmpPath); + options.setExperimentalOption("prefs",prefs); + + driver = new ChromeDriver(options); + } + + @Override + protected String getDriverExecutable(boolean isWindows) { + return isWindows ? WINDOWS_DRIVER : LINUX_DRIVER; + } + + @Override + protected String getDriverType() { + return DRIVER_TYPE; + } + +} diff --git a/Semenova/src/test/java/context/Context.java b/Semenova/src/test/java/context/Context.java new file mode 100644 index 0000000..91892fb --- /dev/null +++ b/Semenova/src/test/java/context/Context.java @@ -0,0 +1,50 @@ +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; + + protected String tmpPath; + + 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"); + } + + public String getTmpPath(){ + return tmpPath; + } +}