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..543a2f1 100644
--- a/proJect/pom.xml
+++ b/proJect/pom.xml
@@ -10,13 +10,14 @@
11
11
+ UTF-8
org.junit.jupiter
junit-jupiter-api
- 5.9.2
+ 5.9.2
test
@@ -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..1345a37 100644
--- a/proJect/src/main/java/anlov/java/Main.java
+++ b/proJect/src/main/java/anlov/java/Main.java
@@ -1,10 +1,7 @@
package anlov.java;
-
-import java.util.Arrays;
-
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/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/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), "Число должно быть больше нуля");
- }
-}