Bài 2: Code test khi áp dụng Fluent Interface

I. Code Test khi bạn mới học Selenium Webdriver

Đây là đoạn code mà bạn thường bắt gặp trong những bài hướng dẫn ở trên mạng về selenium webdriver.

public class LoginSpec {
    WebDriver driver;

    @BeforeEach
    public void setUp() {
        System.setProperty("webdriver.chrome.driver", "src\\test\\resources\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://localhost/wp/wp-login.php");
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().window().maximize();
    }

    @AfterEach
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }

    @Test
    public void login_success() {
        driver.findElement(By.id("user_login")).sendKeys("giang");
        driver.findElement(By.id("user_pass")).sendKeys("12345678");
        driver.findElement(By.id("wp-submit")).click();
        assertEquals("http://localhost/wp/wp-admin/", driver.getCurrentUrl());
    }

}

Nhược điểm khi viết thế này:

  • Bạn dùng trực tiếp API của selenium trong phần Test
  • Bạn chả biết step của mỗi test thế nào, do đó bạn thường phải viết comment vào trong từng dòng code để giải thích ý nghĩa

II. Code test khi bạn đã sử dụng POM

class LoginSpec2 extends BaseTest {

    LoginPage loginPage;
    HomePage homePage;

    @Test
    public void login_success_2() {
        loginPage = new LoginPage(driver);
        homePage = new HomePage(driver);
        loginPage.login("giang", "12345678");
        homePage.isRightURL();
    }
}
  • Điểm tốt: Test ngắn gọn, trong sáng, dễ hiểu hơn
  • Điểm chưa tốt: Test vẫn chưa được readable lắm và phần khó hiểu được chuyển vào trong Class Page

III Code test khi bạn áp dụng Fluent Interface

class LoginSpec3 extends BaseTest3{

    LoginPage login = getLoginPage();
    HomePage home = getHomePage();

    @Test
    public void admin_login_successfully(){
        login.act().inputUsername("giang")
                .inputPassword("12345678")
                .submit();

        home.verify().isRightURL();
    }
}

Điểm tốt:

  • Test dễ đọc hơn chút nữa
  • Phần action verify được thể hiện rõ ràng

Điểm chưa tốt:

  • Phần code low-level trở nên nhiều hơn, hơi khó tiếp cận cho người mới

2 thoughts on “Bài 2: Code test khi áp dụng Fluent Interface

  1. Pingback: Bài 4: Fluent Interface là gì? | GiangTester Blog

  2. Pingback: Bài 1: Setup project với Intellij IDEA và Gradle | GiangTester Blog

Leave a Reply

Your email address will not be published. Required fields are marked *