selenium, tutorial,

Page Object Model: Using string to define locator

Ha Do Ha Do Follow Mar 06, 2021 · 1 min read
Page Object Model: Using string to define locator
Share this

Page Object Model là một cách tổ chức code(design pattern) giúp việc sử dụng hoặc khả năng đọc hiểu tốt hơn khi làm việc với Selenium.

Page Object Model làm 2 việc dưới đây:

  • Định nghĩa các “Operator” hay hành vi người dùng trên 1 trang cụ thể
  • Định nghĩa các “Object” hay các đối tượng trên 1 trang cụ thể

Có một điểm lưu ý khi làm việc với POM đó là chỉ tập trung trên 1 trang cụ thể để làm cho các class page đơn giản và tập trung hơn.

Trong bài này mình sẽ lấy một ví dụ để mô ta việc mình sử dụng kiểu String để mô ta đối tượng.

    WebDriver driver;
    String usernameTxt = "username";
    String passwordTxt = "password";
    String loginBtn = "//button[contains(.,'Login')]";

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

    public void open() {
        driver.get("https://the-internet.herokuapp.com/login");
    }

    public void login(String username, String password) {
        driver.findElement(By.id(usernameTxt)).sendKeys(username);
        driver.findElement(By.id(passwordTxt)).sendKeys(password);
        driver.findElement(By.xpath(loginBtn)).click();
    }

Trên trang login có 3 đối tượng:

    String usernameTxt = "username";
    String passwordTxt = "password";
    String loginBtn = "//button[contains(.,'Login')]";

Ở đây đều được khai báo là kiểu String. Ưu điểm của cách này là đơn giản với những bạn mới bắt đầu làm quen với Selenium bằng Page Object model. Vấn đều ở đây là String usernameTxt = "username" có khả năng là id, name, text, class name nên việc tái sử dụng lại có thể mất thêm thời gian để hiều đây là thuộc tính nào của đối tượng. Mặt khác nếu trên front-end có thay đổi cũng sẽ mất thời gian để cập nhât hoặc hiểu được đó là đối tượng nào trên UI.

Để tránh được rủi ro này thì có thể đưa ra 1 chuẩn là lấy theo css hoặc xpath cho cả team làm theo.

Ha Do
Written by Ha Do Follow
Hi, I am Ha, the author of Tvn education center site