Page Object Model selenium



Bài viết này chúng ta sẽ tìm hiểu về cách viết POM cho selenium.
Mục đích của cách viết code kiểu này là để dễ bảo trì, và có thể sử dụng lại nhiều lần.
POM thực chất chỉ là 1 design pattern, không phải là framework.
Chúng ta hãy cùng nhìn qua ví dụ sau:
Ví dụ dưới đây là login vào trang http://demo.guru99.com/v4 với acc:
User ID : mngr99530
Password : dedunab

trước tiên chúng ta sẽ viết 1 class để xử lý với các element,
sau đó se có 1 class thứ 2, chỉ để gọi lại và sử dụng nó.
Đây là class LoginPage:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class LoginPage {
    public LoginPage(WebDriver driver) {
        this.driver = driver;
    }

    WebDriver driver;
    By name = By.name("uid");
    By pass = By.name("password");
    By btn_login = By.name("btnLogin");

    public void loginDemo(String uid, String password) {
        driver.findElement(name).sendKeys(uid);
        driver.findElement(pass).sendKeys(password);
        driver.findElement(btn_login).click();

    }


}

Nhìn vào class này, chúng ta sẽ thấy nó có nhiệm vụ là tìm 3 element cần thiết, đó là name, pass và btnlogin.
và chúng ta có 1 hàm loginDemo, với 2 biến truyền vào là name và pass.
ở class tiếp theo, chúng ta chỉ việc gọi nó lên và sử dụng với name và pass cần kiểm tra

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class Verify {
    @Test
    public void verifyValidLogin() {
        System.setProperty("webdriver.chrome.driver", "D:\\NVH\\selenium\\gecko\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.manage().window().maximize();

        driver.get("http://demo.guru99.com/v4/");

        LoginPage login = new LoginPage(driver);

        login.loginDemo("mngr99530", "dedunab");
        driver.quit();

    }
}

Vậy là chúng ta đã hiểu về mẫu thiết kế POM rồi. POM là mẫu thiết kế hay được sử dụng nhất, còn có 1 loại nữa là page factory, cũng hay được dùng, bài sau chúng ta sẽ tìm hiểu về nó nhé.

Ảnh trong bài là mình dùng IntelliJ IDEA Community Edition 2017.2.5 để viết script minh họa :)


0 comments:

Post a Comment