Kho lưu trữ đối tượng trong Selenium

⚡ Tóm tắt thông minh

Kho lưu trữ đối tượng trong Selenium Phương pháp này tập trung các bộ định vị phần tử vào một tệp bên ngoài duy nhất, tách biệt chúng khỏi các kịch bản kiểm thử. Cách tiếp cận này giúp cải thiện khả năng bảo trì và cho phép người kiểm thử cập nhật các bộ định vị ở một nơi duy nhất thay vì phải chỉnh sửa nhiều trường hợp kiểm thử khác nhau.

  • 🗂️ Khái niệm cốt lõi: Lưu trữ các định vị giao diện người dùng dưới dạng cặp khóa-giá trị, được giữ riêng biệt với các phần tử khác. Selenium Logic kiểm thử WebDriver.
  • 📄 Phương pháp sử dụng tệp thuộc tính: Lưu trữ các bộ định vị trong một tệp văn bản .properties, được đọc trong quá trình chạy thông qua lớp java.util.Properties.
  • 🧩 Phương pháp sử dụng tệp XML: Sử dụng tệp XML với Mô hình Đối tượng Tài liệu (Document Object Model) và dom4j để đọc các bộ định vị thông qua selectSingleNode.
  • 🔧 Quy trình thực hiện: Tạo tệp, lưu trữ dữ liệu cặp khóa-giá trị, đọc các giá trị vào các biến, sau đó truyền chúng cho hàm findElement.
  • 🛡️ Lợi ích duy trì: Khi một bộ định vị thay đổi, chỉ cần cập nhật tệp kho lưu trữ, chứ không phải cập nhật mọi trường hợp kiểm thử bị ảnh hưởng.

Kho lưu trữ đối tượng trong Selenium

Kho lưu trữ đối tượng là gì?

Kho lưu trữ đối tượng là một vị trí lưu trữ chung cho tất cả các đối tượng. TRONG Selenium Trong bối cảnh WebDriver, các đối tượng thường là bộ định vị được sử dụng để xác định duy nhất các thành phần web.

Ưu điểm chính của việc sử dụng kho lưu trữ đối tượng là sự tách biệt giữa đối tượng và các trường hợp kiểm thử. Nếu giá trị định vị của một phần tử web thay đổi, chỉ cần thay đổi kho lưu trữ đối tượng chứ không cần phải thay đổi tất cả các trường hợp kiểm thử đã sử dụng định vị đó. Việc duy trì kho lưu trữ đối tượng giúp tăng tính mô đun hóa trong việc triển khai khung phần mềm.

Các loại kho lưu trữ đối tượng trong Selenium Trình điều khiển web

Selenium WebDriver không cung cấp kho lưu trữ đối tượng tích hợp sẵn theo mặc định. Tuy nhiên, kho lưu trữ đối tượng có thể được xây dựng bằng cách sử dụng phương pháp cặp khóa-giá trị, trong đó khóa đề cập đến tên được đặt cho đối tượng và giá trị đề cập đến các thuộc tính được sử dụng để xác định duy nhất một đối tượng trong trang web.

Sau đây là các loại kho lưu trữ đối tượng có thể được tạo trong Selenium WebDriver.

  1. Kho lưu trữ đối tượng sử dụng tệp Thuộc tính
  2. Kho lưu trữ đối tượng sử dụng tệp XML

Selenium Kho lưu trữ đối tượng trình điều khiển web bằng tệp Thuộc tính

Trong phương pháp này, tập tin thuộc tính là một tập tin văn bản trong đó dữ liệu được lưu trữ dưới dạng các cặp khóa-giá trị. Hướng dẫn dưới đây sẽ đề cập đến các chủ đề sau.

Bước 1) Tạo tệp thuộc tính trong eclipse

  1. Trước tiên, cần tạo cấu trúc dự án Java như bên dưới trong Eclipse. Tên dự án và tên gói có thể là bất kỳ tên hợp lệ nào.

Tạo một tệp thuộc tính trong Eclipse

  1. Nhấp chuột phải vào thư mục dự án chính và chọn Mới -> Khác

Tạo một tệp thuộc tính trong Eclipse

  1. Trong cửa sổ tiếp theo, chọn Chung -> Tệp và nhấp vào nút 'Tiếp theo'.

Tạo một tệp thuộc tính trong Eclipse

  1. Nhập tên tệp hợp lệ với phần mở rộng '.properties' vào cửa sổ tài nguyên tệp mới và nhấp vào nút 'Hoàn tất'.

Tạo một tệp thuộc tính trong Eclipse

  1. Tệp có tên 'application.properties' phải được hiển thị trên Cấu trúc Dự án.

Tạo một tệp thuộc tính trong Eclipse

Bước 2) Lưu trữ dữ liệu vào tệp thuộc tính

  1. Dữ liệu được lưu trữ trong một tệp thuộc tính dưới dạng các cặp khóa-giá trị, trong đó khóa là duy nhất trên toàn bộ tệp.
  2. Chúng ta sẽ thử sử dụng tệp thuộc tính để xác định các phần tử web bằng cách sử dụng các giá trị định vị.
  3. Mở tệp application.properties trong Eclipse và lưu trữ dữ liệu sau
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Lưu trữ dữ liệu vào tệp thuộc tính

4) Trong hướng dẫn này, trang web demo sau đây sẽ được sử dụng:

https://demo.guru99.com/test/guru99home/Đây là kịch bản kiểm thử:

  • Nhấp vào liên kết Kiểm thử trên thiết bị di động bằng XPATH.
  • Điều hướng trở lại
  • Nhập dữ liệu vào ô văn bản email bằng ID
  • Bấm vào nút Đăng ký bằng ID

Bước 3) Đọc dữ liệu từ tệp thuộc tính

  1. Việc đọc dữ liệu từ một tập tin thuộc tính có thể được thực hiện bằng cách sử dụng lớp Properties tích hợp sẵn được cung cấp trong gói java.util.
  2. Trước tiên, cần tạo một đối tượng thuộc lớp Properties như sau:
  Properties obj = new Properties();
  1. Chúng ta cần tạo một đối tượng của lớp FileInputStream với đường dẫn đến tệp thuộc tính.
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. Việc đọc dữ liệu từ một tập tin thuộc tính có thể được thực hiện bằng cách sử dụng phương thức `load` được cung cấp bởi lớp `Properties` trong Java. Đoạn mã dưới đây minh họa cách sử dụng phương thức `load`.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

Chuỗi 'mobileTesting' sẽ chứa XPATH để xác định liên kết Kiểm tra thiết bị di động trong trang web.

Bước 4) Sử dụng tệp thuộc tính trong tập lệnh thử nghiệm

Tệp thuộc tính có thể được sử dụng trong các kịch bản kiểm thử bằng cách đọc dữ liệu từ tệp thuộc tính và truyền dữ liệu đó làm tham số cho phương thức findElement. Đoạn mã dưới đây minh họa cách sử dụng dữ liệu được đọc từ tệp thuộc tính trong các kịch bản kiểm thử.

driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();

Dưới đây là mã hoàn chỉnh được sử dụng cho kịch bản thử nghiệm ở trên.

package com.objectrepository.demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

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

public class DemoOR {

    public static void main(String[] args) throws IOException {

        // Create WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Load the properties File
        Properties obj = new Properties();
        FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
        obj.load(objfile);
        // Navigate to link Mobile Testing and Back
        driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
        driver.navigate().back();
        // Enter Data into Form
        driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();
    }

}

Selenium Kho lưu trữ đối tượng WebDriver bằng tệp XML

XML là viết tắt của Extensible Markup Language (Ngôn ngữ đánh dấu mở rộng). Tệp XML sử dụng Mô hình Đối tượng Tài liệu (DOM) làm cấu trúc cơ bản. Định dạng tệp XML sẽ mô phỏng định dạng HTML mà trang web được xây dựng dựa trên đó. Dưới đây là danh sách các chủ đề sẽ được đề cập.

Bước 1) Tạo một tệp XML trong eclipse

  1. Cấu trúc dự án java bên dưới cần được tạo trong Eclipse.

Tạo một tệp XML trong Eclipse

  1. Nhấp chuột phải vào thư mục dự án, chọn Mới -> Khác

Tạo một tệp XML trong Eclipse

  1. Chọn tệp XML trong thư mục XML và nhấp vào nút 'Tiếp theo'.

Tạo một tệp XML trong Eclipse

  1. Nhập tên tệp XML hợp lệ và nhấp vào nút 'Hoàn tất'.

Tạo một tệp XML trong Eclipse

  1. Một file XML sẽ được thêm vào thư mục dự án như hình dưới đây

Tạo một tệp XML trong Eclipse

Bước 2) Lưu trữ dữ liệu vào tệp XML

Dữ liệu có thể được lưu trữ trong tệp XML dưới dạng Mô hình Đối tượng Tài liệu (DOM). Để đơn giản, chúng ta có thể sử dụng kịch bản kiểm thử dưới đây làm ví dụ.

  • Nhấp vào liên kết Kiểm thử trên thiết bị di động bằng XPATH.
  • Quay lại trang chủ
  • Nhập dữ liệu vào ô văn bản email bằng ID
  • Bấm vào nút Đăng ký bằng ID

Dưới đây là định dạng của tệp XML cần sử dụng.

<menu>
      <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting>
      <email> philadelphia-field-email</email>
      <signup> philadelphia-field-submit </signup>
 </menu>

Lưu trữ mã XML ở trên trong Properties.xml

Lưu trữ dữ liệu vào tệp XML

Trong tab thiết kế bạn sẽ thấy

Lưu trữ dữ liệu vào tệp XML

Bước 3) Đọc dữ liệu từ tệp XML

1. Việc đọc dữ liệu từ tệp XML có thể được thực hiện bằng cách sử dụng lớp 'dom4j' tích hợp sẵn trong Java. Xin lưu ý rằng bạn cần thêm các tệp JAR bên dưới vào đường dẫn xây dựng của dự án trước khi tiếp tục với mã.

  • jaxen.jar
  • dom4j-1.6.jar

2. Đoạn mã dưới đây dùng để đọc dữ liệu từ tệp XML.

        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

3. Trước tiên, chúng ta cần tạo một đối tượng File và truyền nó làm tham số cho phương thức 'read' của lớp SAXReader. Sau khi dữ liệu tệp XML được đọc thành công, chúng ta có thể truy cập các nút riêng lẻ của tài liệu XML bằng phương thức 'selectSingleNode'.

Bước 4) Sử dụng tệp XML trong tập lệnh thử nghiệm

Tệp XML có thể được sử dụng trong các kịch bản kiểm thử bằng cách đọc dữ liệu từ tệp XML và truyền dữ liệu đó làm tham số cho phương thức findElement. Đoạn mã dưới đây minh họa cách sử dụng dữ liệu được đọc từ tệp XML trong các kịch bản kiểm thử.

driver.findElement(By.xpath(mobileTesting)).click();
driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(signUpButton)).click();

Đoạn mã dưới đây minh họa cách sử dụng tệp XML trong Selenium WebDriver.

package com.objectrepository.demo;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class DemoORXML {

    public static void main(String[] args) throws DocumentException {
        // Creating WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Reading XML File
        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

        // Navigating to Mobile Testing and back
        driver.findElement(By.xpath(mobileTesting)).click();
        driver.navigate().back();
        // Entering Form Data
        driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(signUpButton)).click();

    }
}

Tải xuống WebDriver Eclipse Dự án

Câu Hỏi Thường Gặp

Một kho lưu trữ đối tượng chỉ lưu trữ các bộ định vị phần tử bên ngoài. Mô hình Đối tượng Trang (Page Object Model) là một mô hình rộng hơn, bao bọc các bộ định vị và các hành động trên trang bên trong các lớp trang.

Đúng vậy. Các bộ định vị cũng có thể được lưu trữ trong các tệp Excel hoặc CSV, được đọc bằng thư viện như Apache POI và được truyền cho hàm findElement.

Sử dụng các khóa rõ ràng, mô tả chi tiết, nhóm các bộ định vị theo trang, ưu tiên các bộ định vị ổn định như ID và tránh trùng lặp. Giữ một kho lưu trữ cho mỗi mô-đun để khi có thay đổi về bộ định vị thì chỉ cập nhật một mục duy nhất.

Đúng vậy. Một số công cụ hỗ trợ AI có thể quét trang, phát hiện các phần tử và xuất các bộ định vị đã được tạo sẵn vào kho lưu trữ. Người kiểm thử vẫn nên xem xét lại các bộ định vị để đảm bảo tính ổn định.

Khả năng tự phục hồi của AI quan sát các thuộc tính của phần tử trong quá trình chạy và, khi một bộ định vị được lưu trữ bị lỗi, sẽ tự động chọn một bộ định vị thay thế phù hợp. Điều này giúp các bài kiểm tra tiếp tục chạy bất chấp những thay đổi nhỏ về giao diện và giảm chi phí bảo trì.

Tóm tắt bài viết này với: