From cf07d37b583a47f06f3802b6ace4e95fcfa019fb Mon Sep 17 00:00:00 2001 From: anlov Date: Thu, 4 Sep 2025 13:43:08 +0300 Subject: [PATCH 1/3] Lesson_13 --- .idea/encodings.xml | 7 ++ proJect/pom.xml | 14 ++- .../src/main/java/anlov/java/Factorial.java | 15 --- proJect/src/main/java/anlov/java/Main.java | 2 +- proJect/src/test/java/FactorialTest.java | 34 ------- proJect/src/test/java/TestClass.java | 92 +++++++++++++++++++ 6 files changed, 113 insertions(+), 51 deletions(-) create mode 100644 .idea/encodings.xml delete mode 100644 proJect/src/main/java/anlov/java/Factorial.java delete mode 100644 proJect/src/test/java/FactorialTest.java create mode 100644 proJect/src/test/java/TestClass.java diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..0fe6d5d --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/proJect/pom.xml b/proJect/pom.xml index 8427783..3bf4057 100644 --- a/proJect/pom.xml +++ b/proJect/pom.xml @@ -10,6 +10,7 @@ 11 11 + UTF-8 @@ -25,13 +26,24 @@ 5.9.2 test - org.junit.jupiter junit-jupiter-params 5.9.2 test + + org.seleniumhq.selenium + selenium-java + LATEST + test + + + io.github.bonigarcia + webdrivermanager + LATEST + test + \ No newline at end of file diff --git a/proJect/src/main/java/anlov/java/Factorial.java b/proJect/src/main/java/anlov/java/Factorial.java deleted file mode 100644 index 27a9dcf..0000000 --- a/proJect/src/main/java/anlov/java/Factorial.java +++ /dev/null @@ -1,15 +0,0 @@ -package anlov.java; - -public class Factorial { - - public static long getFactorial(int num) { - if (num < 0) { - throw new IllegalArgumentException("Число должно быть положительным"); - } - int factorial = 1; - for (int i = 1; i <= num; i++) { - factorial *= i; - } - return factorial; - } -} diff --git a/proJect/src/main/java/anlov/java/Main.java b/proJect/src/main/java/anlov/java/Main.java index c14deaa..d1bdbb7 100644 --- a/proJect/src/main/java/anlov/java/Main.java +++ b/proJect/src/main/java/anlov/java/Main.java @@ -5,6 +5,6 @@ public class Main { public static void main(String[] args) { - System.out.println(Factorial.getFactorial(3)); + } } \ No newline at end of file diff --git a/proJect/src/test/java/FactorialTest.java b/proJect/src/test/java/FactorialTest.java deleted file mode 100644 index 618d24f..0000000 --- a/proJect/src/test/java/FactorialTest.java +++ /dev/null @@ -1,34 +0,0 @@ -import anlov.java.Factorial; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - - -class FactorialTest { - - @DisplayName("Check factorial if num equals 0") - @Test - void checkFactorial() { - assertEquals(1, Factorial.getFactorial(0)); - } - - @DisplayName("Check factorial if num more 0") - @ParameterizedTest - @ValueSource(ints = {1, 2, 3, 4}) - void checkMoreZero(int num) { - long[] numbers = {1, 2, 6, 24}; - assertEquals(numbers[num - 1], Factorial.getFactorial(num)); - - } - - @Test - void negativeInputShouldThrowException() { - assertThrows(IllegalArgumentException.class, - () -> Factorial.getFactorial(-5), "Число должно быть больше нуля"); - } -} diff --git a/proJect/src/test/java/TestClass.java b/proJect/src/test/java/TestClass.java new file mode 100644 index 0000000..ef9586d --- /dev/null +++ b/proJect/src/test/java/TestClass.java @@ -0,0 +1,92 @@ +import io.github.bonigarcia.wdm.WebDriverManager; +import org.junit.jupiter.api.*; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.time.Duration; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class TestClass { + + WebDriver driver; + WebDriverWait wait; + + @BeforeAll + static void setupAll() { + WebDriverManager.chromedriver().setup(); + } + + @BeforeEach + void setup() { + ChromeOptions co = new ChromeOptions(); + co.addArguments("--start-maximized"); + driver = new ChromeDriver(co); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); + driver.get("https://www.mts.by/"); + driver.findElement(By.xpath("//button[@id='cookie-agree']")).click(); + } + + @AfterEach + void teardown() { + driver.quit(); + } + + @Test + @DisplayName("Проверить название блока") + void checkBlockName() { + WebElement nameOfBlogs = driver.findElement(By.xpath + ("//div[@class='pay__wrapper']/h2")); + assertEquals("Онлайн пополнение\nбез комиссии", nameOfBlogs.getText()); + } + + @Test + @DisplayName("Проверить наличие логотипов платёжных систем") + void checkLogos() { + List logos = driver.findElements(By.xpath + ("//div[@class='pay__partners']/ul/li/img")); + logos.forEach(l -> assertTrue(l.isDisplayed(), l.getAttribute("alt"))); + } + + @Test + @DisplayName("Проверить работу ссылки -'Подробнее о сервисе'") + void checkLink() { + String link = "https://www.mts.by/help/poryadok-oplaty-i-bezopasnost-internet-platezhey/"; + WebElement linkCheck = driver.findElement(By.xpath + ("//div[@class='pay__wrapper']/a")); + assertTrue(linkCheck.isEnabled()); + assertTrue(linkCheck.isDisplayed()); + String linkAttribute = linkCheck.getAttribute("href"); + driver.get(linkAttribute); + assertEquals(link, linkAttribute); + } + + @Test + @DisplayName("Проверить заполнение полей и работу кнопки 'Продолжить'") + void checkContinue() { + final String NUMBER = ""; + final String SUMMA = "25"; + final String EMAIL = ""; + driver.findElement(By.xpath("//input[@id='connection-phone']")).sendKeys("297777777"); + driver.findElement(By.xpath("//input[@id='connection-sum']")).sendKeys("25"); + driver.findElement(By.xpath("//input[@id='connection-email']")).sendKeys("aston.777@gmai.com"); + driver.findElement(By.xpath("//form[@id='pay-connection']/button")).click(); + + wait = new WebDriverWait(driver, Duration.ofSeconds(7)); + WebElement iframe = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath + ("//iframe[@class='bepaid-iframe']"))); + driver.switchTo().frame(iframe); + WebElement payContinue = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath + ("//div[@class='app-wrapper__content']"))); + + assertTrue(payContinue.isDisplayed()); + } + +} From 20f7598c198ab1ea5496bce70e4a3c2be57ecc67 Mon Sep 17 00:00:00 2001 From: anlov Date: Thu, 4 Sep 2025 13:43:30 +0300 Subject: [PATCH 2/3] Lesson_13 --- proJect/src/main/java/anlov/java/Main.java | 3 --- proJect/src/test/java/TestClass.java | 3 --- 2 files changed, 6 deletions(-) diff --git a/proJect/src/main/java/anlov/java/Main.java b/proJect/src/main/java/anlov/java/Main.java index d1bdbb7..1345a37 100644 --- a/proJect/src/main/java/anlov/java/Main.java +++ b/proJect/src/main/java/anlov/java/Main.java @@ -1,8 +1,5 @@ package anlov.java; - -import java.util.Arrays; - public class Main { public static void main(String[] args) { diff --git a/proJect/src/test/java/TestClass.java b/proJect/src/test/java/TestClass.java index ef9586d..d11accc 100644 --- a/proJect/src/test/java/TestClass.java +++ b/proJect/src/test/java/TestClass.java @@ -71,9 +71,6 @@ void checkLink() { @Test @DisplayName("Проверить заполнение полей и работу кнопки 'Продолжить'") void checkContinue() { - final String NUMBER = ""; - final String SUMMA = "25"; - final String EMAIL = ""; driver.findElement(By.xpath("//input[@id='connection-phone']")).sendKeys("297777777"); driver.findElement(By.xpath("//input[@id='connection-sum']")).sendKeys("25"); driver.findElement(By.xpath("//input[@id='connection-email']")).sendKeys("aston.777@gmai.com"); From a973e153ed368434df012953da590c462c37adf5 Mon Sep 17 00:00:00 2001 From: anlov Date: Mon, 15 Sep 2025 21:38:59 +0300 Subject: [PATCH 3/3] Lesson_14 --- proJect/pom.xml | 2 +- proJect/src/test/java/AppTest.java | 154 +++++++++++++++++++++++++++ proJect/src/test/java/TestClass.java | 89 ---------------- 3 files changed, 155 insertions(+), 90 deletions(-) create mode 100644 proJect/src/test/java/AppTest.java delete mode 100644 proJect/src/test/java/TestClass.java diff --git a/proJect/pom.xml b/proJect/pom.xml index 3bf4057..543a2f1 100644 --- a/proJect/pom.xml +++ b/proJect/pom.xml @@ -17,7 +17,7 @@ org.junit.jupiter junit-jupiter-api - 5.9.2 + 5.9.2 test diff --git a/proJect/src/test/java/AppTest.java b/proJect/src/test/java/AppTest.java new file mode 100644 index 0000000..ba3ba7f --- /dev/null +++ b/proJect/src/test/java/AppTest.java @@ -0,0 +1,154 @@ +import io.github.bonigarcia.wdm.WebDriverManager; +import org.junit.jupiter.api.*; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.time.Duration; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class AppTest { + WebDriver driver; + WebDriverWait wait; + + @BeforeAll + static void setupAll() { + WebDriverManager.chromedriver().setup(); + } + + @BeforeEach + void setup() { + driver = new ChromeDriver(); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); + driver.get("https://www.mts.by/"); + driver.findElement(By.xpath("//button[@id='cookie-agree']")).click(); + wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + } + + @AfterEach + void teardown() { + driver.quit(); + } + + @Test + @DisplayName("Проверить надписи в незаполненных полях каждого варианта оплаты услуги") + void checkText() { + final String SUM = "Сумма"; + final String EMAIL = "E-mail для отправки чека"; + String phoneField = getTextFromWebElement("//input[@id='connection-phone']", + "placeholder"); + String sumField = getTextFromWebElement("//input[@id='connection-sum']", + "placeholder"); + String emailField = getTextFromWebElement("//input[@id='connection-email']", + "placeholder"); + assertAll( + () -> assertEquals("Номер телефона", phoneField), + () -> assertEquals(SUM, sumField), + () -> assertEquals(EMAIL, emailField) + ); + String internetField = getTextFromWebElement("//input[@id='internet-phone']", + "placeholder"); + String internetSum = getTextFromWebElement("//input[@id='internet-sum']", + "placeholder"); + String internetEmail = getTextFromWebElement("//input[@id='internet-email']", + "placeholder"); + assertAll( + () -> assertEquals("Номер абонента", internetField), + () -> assertEquals(SUM, internetSum), + () -> assertEquals(EMAIL, internetEmail) + ); + String instalmentNum = getTextFromWebElement("//input[@id='score-instalment']", + "placeholder"); + String instalmentSum = getTextFromWebElement("//input[@id='instalment-sum']", + "placeholder"); + String instalmentEmail = getTextFromWebElement("//input[@id='instalment-email']", + "placeholder"); + assertAll( + () -> assertEquals("Номер счета на 44", instalmentNum), + () -> assertEquals(SUM, instalmentSum), + () -> assertEquals(EMAIL, instalmentEmail) + ); + String arrearNum = getTextFromWebElement("//input[@id='score-arrears']", + "placeholder"); + String arrearSum = getTextFromWebElement("//input[@id='arrears-sum']", + "placeholder"); + String arrearEmail = getTextFromWebElement("//input[@id='arrears-email']", + "placeholder"); + assertAll( + () -> assertEquals("Номер счета на 2073", arrearNum), + () -> assertEquals(SUM, arrearSum), + () -> assertEquals(EMAIL, arrearEmail) + ); + } + + @Test + @DisplayName("Проверить корректность отображения данных") + void checkForm() { + final String NUMBER = "297777777"; + final double SUMMA = 25.0; + final String SUMMA_STRING = "25"; + final String EMAIL = "aston.777@gmai.com"; + + driver.findElement(By.xpath("//input[@id='connection-phone']")).sendKeys(NUMBER); + driver.findElement(By.xpath("//input[@id='connection-sum']")).sendKeys(SUMMA_STRING); + driver.findElement(By.xpath("//input[@id='connection-email']")).sendKeys(EMAIL); + driver.findElement(By.xpath("//form[@id='pay-connection']/button")).click(); + WebElement iframe = wait.until(ExpectedConditions.presenceOfElementLocated( + By.xpath("//iframe[@class='bepaid-iframe']"))); + driver.switchTo().frame(iframe); + + Double amount = getDoubleFromWebElement( + "//div[@class='pay-description__cost']/span", " ", 0); + String info = getTextFromWebElement( + "//span[contains(text(), \"Оплата:\")] ", "375", 1); + Double sum = getDoubleFromWebElement( + "//div[@class='card-page__card']/button", " ", 1); + + String actualNum = getTextFromWebElement("//input[@id='cc-number']/.."); + String validity = getTextFromWebElement("//input[@autocomplete='cc-exp']/.."); + String code = getTextFromWebElement("//input[@name='verification_value']/.."); + String fullName = getTextFromWebElement("//input[@autocomplete='cc-name']/.."); + + List logos = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy( + By.xpath("//input[@id='cc-number']/../following-sibling::div/.//img") + )); + assertAll( + () -> assertEquals(SUMMA, amount), + () -> assertEquals(SUMMA, sum), + () -> assertEquals(NUMBER, info), + () -> assertEquals("Номер карты", actualNum), + () -> assertEquals("Срок действия", validity), + () -> assertEquals("CVC", code), + () -> assertEquals("Имя и фамилия на карте", fullName), + () -> logos.forEach(p -> assertTrue(p.isDisplayed())) + ); + } + + public String getTextFromWebElement(String xpath) { + return driver.findElement(By.xpath(xpath)) + .getAttribute("innerText"); + } + + public String getTextFromWebElement(String xpath, String attributeName) { + return driver.findElement(By.xpath(xpath)) + .getAttribute(attributeName); + } + + public String getTextFromWebElement(String xpath, String regexp, int index) { + return driver.findElement(By.xpath(xpath)) + .getAttribute("innerText") + .split(regexp)[index]; + } + + public Double getDoubleFromWebElement(String xpath, String regexp, int index) { + return Double.parseDouble(driver.findElement(By.xpath(xpath)) + .getAttribute("innerText") + .split(regexp)[index]); + } +} + diff --git a/proJect/src/test/java/TestClass.java b/proJect/src/test/java/TestClass.java deleted file mode 100644 index d11accc..0000000 --- a/proJect/src/test/java/TestClass.java +++ /dev/null @@ -1,89 +0,0 @@ -import io.github.bonigarcia.wdm.WebDriverManager; -import org.junit.jupiter.api.*; -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - -import java.time.Duration; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class TestClass { - - WebDriver driver; - WebDriverWait wait; - - @BeforeAll - static void setupAll() { - WebDriverManager.chromedriver().setup(); - } - - @BeforeEach - void setup() { - ChromeOptions co = new ChromeOptions(); - co.addArguments("--start-maximized"); - driver = new ChromeDriver(co); - driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); - driver.get("https://www.mts.by/"); - driver.findElement(By.xpath("//button[@id='cookie-agree']")).click(); - } - - @AfterEach - void teardown() { - driver.quit(); - } - - @Test - @DisplayName("Проверить название блока") - void checkBlockName() { - WebElement nameOfBlogs = driver.findElement(By.xpath - ("//div[@class='pay__wrapper']/h2")); - assertEquals("Онлайн пополнение\nбез комиссии", nameOfBlogs.getText()); - } - - @Test - @DisplayName("Проверить наличие логотипов платёжных систем") - void checkLogos() { - List logos = driver.findElements(By.xpath - ("//div[@class='pay__partners']/ul/li/img")); - logos.forEach(l -> assertTrue(l.isDisplayed(), l.getAttribute("alt"))); - } - - @Test - @DisplayName("Проверить работу ссылки -'Подробнее о сервисе'") - void checkLink() { - String link = "https://www.mts.by/help/poryadok-oplaty-i-bezopasnost-internet-platezhey/"; - WebElement linkCheck = driver.findElement(By.xpath - ("//div[@class='pay__wrapper']/a")); - assertTrue(linkCheck.isEnabled()); - assertTrue(linkCheck.isDisplayed()); - String linkAttribute = linkCheck.getAttribute("href"); - driver.get(linkAttribute); - assertEquals(link, linkAttribute); - } - - @Test - @DisplayName("Проверить заполнение полей и работу кнопки 'Продолжить'") - void checkContinue() { - driver.findElement(By.xpath("//input[@id='connection-phone']")).sendKeys("297777777"); - driver.findElement(By.xpath("//input[@id='connection-sum']")).sendKeys("25"); - driver.findElement(By.xpath("//input[@id='connection-email']")).sendKeys("aston.777@gmai.com"); - driver.findElement(By.xpath("//form[@id='pay-connection']/button")).click(); - - wait = new WebDriverWait(driver, Duration.ofSeconds(7)); - WebElement iframe = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath - ("//iframe[@class='bepaid-iframe']"))); - driver.switchTo().frame(iframe); - WebElement payContinue = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath - ("//div[@class='app-wrapper__content']"))); - - assertTrue(payContinue.isDisplayed()); - } - -}