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.

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.
- Kho lưu trữ đối tượng sử dụng tệp Thuộc tính
- 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
- 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.
- Nhấp chuột phải vào thư mục dự án chính và chọn Mới -> Khác
- Trong cửa sổ tiếp theo, chọn Chung -> Tệp và nhấp vào nút 'Tiếp theo'.
- 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ệp có tên 'application.properties' phải được hiển thị trên Cấu trúc Dự án.
Bước 2) Lưu trữ dữ liệu vào tệp thuộc tính
- 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.
- 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ị.
- 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
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
- 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.
- Trước tiên, cần tạo một đối tượng thuộc lớp Properties như sau:
Properties obj = new Properties();
- 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");
- 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.
- Tạo một tập tin XML trong eclipse
- Lưu trữ dữ liệu vào tệp XML
- Đọc dữ liệu từ tệp XML
- Sử dụng tệp XML trong tập lệnh thử nghiệm
Bước 1) Tạo một tệp XML trong eclipse
- Cấu trúc dự án java bên dưới cần được tạo trong Eclipse.
- Nhấp chuột phải vào thư mục dự án, chọn Mới -> Khác
- Chọn tệp XML trong thư mục XML và nhấp vào nút 'Tiếp theo'.
- Nhập tên tệp XML hợp lệ và nhấp vào nút 'Hoàn tất'.
- Một file XML sẽ được thêm vào thư mục dự án như hình dưới đây
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
Trong tab thiết kế bạn sẽ thấy
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













