├── README.md ├── src ├── main │ └── java │ │ └── mk │ │ └── ukim │ │ └── finki │ │ └── seleniumtesting │ │ ├── BasePage.java │ │ ├── HomePage.java │ │ └── LoginPage.java └── test │ └── java │ └── mk │ └── ukim │ └── finki │ └── seleniumtesting │ └── LoginTest.java ├── .gitignore └── pom.xml /README.md: -------------------------------------------------------------------------------- 1 | ## Selenium automatic testing for Facebook login form and home page.
2 | ### Tests:
3 | T1: Login with invalid credentials and check error message.
4 | T2: Login with empty username and check error message.
5 | T3: Login successfully and check if you are navigated to the homepage.
6 | -------------------------------------------------------------------------------- /src/main/java/mk/ukim/finki/seleniumtesting/BasePage.java: -------------------------------------------------------------------------------- 1 | package mk.ukim.finki.seleniumtesting; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | import org.openqa.selenium.support.ui.WebDriverWait; 5 | 6 | public class BasePage { 7 | public final WebDriverWait wait; 8 | protected WebDriver driver; 9 | 10 | public BasePage(WebDriver driver) { 11 | this.driver = driver; 12 | wait = new WebDriverWait(driver, 10); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ -------------------------------------------------------------------------------- /src/main/java/mk/ukim/finki/seleniumtesting/HomePage.java: -------------------------------------------------------------------------------- 1 | package mk.ukim.finki.seleniumtesting; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.support.ui.ExpectedConditions; 6 | 7 | import java.sql.Time; 8 | 9 | public class HomePage extends BasePage{ 10 | 11 | public HomePage(WebDriver driver) { 12 | super(driver); 13 | } 14 | 15 | public boolean isLoaded() throws InterruptedException { 16 | Thread.sleep(12000); 17 | return wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("a8c37x1j"))) 18 | .isDisplayed(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | SeleniumTesting 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.testng 14 | testng 15 | 6.14.3 16 | test 17 | 18 | 19 | org.seleniumhq.selenium 20 | selenium-java 21 | 3.141.59 22 | 23 | 24 | org.seleniumhq.selenium 25 | selenium-support 26 | 4.0.0-alpha-3 27 | compile 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/main/java/mk/ukim/finki/seleniumtesting/LoginPage.java: -------------------------------------------------------------------------------- 1 | package mk.ukim.finki.seleniumtesting; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.support.ui.ExpectedConditions; 7 | 8 | public class LoginPage extends BasePage { 9 | 10 | public LoginPage(WebDriver driver) { 11 | super(driver); 12 | } 13 | 14 | public void open() { 15 | driver.get("https://www.facebook.com/"); 16 | } 17 | 18 | public boolean isLoaded() throws InterruptedException { 19 | Thread.sleep(5000); 20 | return wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("email"))).isDisplayed(); 21 | } 22 | 23 | public void login(String user, String password) throws InterruptedException { 24 | driver.findElement(By.id("email")).clear(); 25 | driver.findElement(By.id("email")).sendKeys(user); 26 | Thread.sleep(5000); 27 | driver.findElement(By.id("pass")).sendKeys(password); 28 | Thread.sleep(5000); 29 | driver.findElement(By.cssSelector("[name=\"login\"]")).click(); 30 | Thread.sleep(5000); 31 | } 32 | 33 | public String getErrorMessage() { 34 | WebElement errorPage = driver.findElement(By.className("_9ay7")); 35 | return errorPage.getText(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/test/java/mk/ukim/finki/seleniumtesting/LoginTest.java: -------------------------------------------------------------------------------- 1 | package mk.ukim.finki.seleniumtesting; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | import org.openqa.selenium.chrome.ChromeDriver; 5 | import org.testng.annotations.AfterTest; 6 | import org.testng.annotations.BeforeTest; 7 | import org.testng.annotations.Test; 8 | 9 | import static org.testng.Assert.assertEquals; 10 | import static org.testng.Assert.assertTrue; 11 | 12 | public class LoginTest { 13 | private WebDriver driver; 14 | 15 | @BeforeTest 16 | public void setup() { 17 | driver = getDriver(); 18 | } 19 | 20 | 21 | @Test 22 | public void shouldOpen() throws InterruptedException { 23 | LoginPage loginPage = new LoginPage(driver); 24 | loginPage.open(); 25 | assertTrue(loginPage.isLoaded()); 26 | } 27 | 28 | @Test//T1 29 | public void canNotLoginWithInvalidPassword() throws InterruptedException { 30 | LoginPage loginPage = new LoginPage(driver); 31 | loginPage.open(); 32 | assertTrue(loginPage.isLoaded()); 33 | loginPage.login("gabdimitrievski111@gmail.com", "wrong_password_test"); 34 | String errorMessage = loginPage.getErrorMessage(); 35 | assertEquals(errorMessage, "The password you’ve entered is incorrect. Forgot Password?"); 36 | 37 | } 38 | @Test//T2 39 | public void canNotLoginWithoutUserName() throws InterruptedException { 40 | LoginPage loginPage = new LoginPage(driver); 41 | loginPage.open(); 42 | assertTrue(loginPage.isLoaded()); 43 | loginPage.login("", ""); 44 | String errorMessage = loginPage.getErrorMessage(); 45 | assertEquals(errorMessage, "The email or mobile number you entered isn’t connected to an account. Find your account and log in."); 46 | 47 | } 48 | 49 | @Test//T3 50 | public void shouldLogin() throws InterruptedException { 51 | LoginPage loginPage = new LoginPage(driver); 52 | loginPage.open(); 53 | assertTrue(loginPage.isLoaded()); 54 | loginPage.login("gabdimitrievski111@gmail.com", "correct_password"); 55 | assertTrue(new HomePage(driver).isLoaded()); 56 | } 57 | 58 | 59 | private WebDriver getDriver() { 60 | System.setProperty("webdriver.chrome.driver", "C:\\Users\\gabri\\Desktop\\Intellij Homeworks\\SeleniumAutomaticTesting\\src\\main\\resources\\drivers\\chromedriver.exe"); 61 | return new ChromeDriver(); 62 | } 63 | 64 | @AfterTest 65 | public void teardown() { 66 | driver.quit(); 67 | } 68 | } 69 | --------------------------------------------------------------------------------