Kho lưu trữ đối tượng trong Selenium (Tệp XML & Thuộc tính)

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à tách biệt các đối tượng khỏi các trường hợp thử nghiệm. Nếu giá trị bộ định vị của một phần tử web thay đổi thì chỉ cần thay đổi kho lưu trữ đối tượng thay vì thực hiện thay đổi trong tất cả các trường hợp thử nghiệm trong đó bộ định vị đã được sử dụng. Việc duy trì một kho lưu trữ đối tượng làm tăng tính mô-đun của việc triển khai khung.

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

Selenium Theo mặc định, WebDriver không cung cấp kho lưu trữ đối tượng dựng sẵn. 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 để nhận dạng 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 cách tiếp cận này, tệp thuộc tính là tệp văn bản trong đó dữ liệu được lưu trữ dưới dạng cặp khóa-giá trị. Hướng dẫn bên dưới sẽ giải quyết các chủ đề sau.

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

  1. Để bắt đầu, cấu trúc dự án java bên dưới cần được tạo 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. Cung cấp tên tệp hợp lệ có phần mở rộng '.properties' trên 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 tệp thuộc tính dưới dạng cặp khóa-giá trị, với khóa là duy nhất trên tệp.
  2. Chúng tôi sẽ cố gắng 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 thử nghiệm:

  • Nhấp vào liên kết Kiểm tra thiết bị di động bằng XPATH
  • Điều hướng trở lại
  • Nhập dữ liệu vào hộp 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ừ tệp thuộc tính có thể được thực hiện bằng cách sử dụng lớp Thuộc tính tích hợp được cung cấp trong gói java.util.
  2. Ban đầu, một đối tượng của lớp Properties cần được tạo 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ừ tệp thuộc tính có thể được thực hiện bằng phương thức tải do lớp Thuộc tính trong java cung cấp. Đoạn mã dưới đây minh họa cách sử dụng phương thức tải.
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 tập lệnh thử nghiệm bằng cách đọc dữ liệu từ tệp thuộc tính và truyền dữ liệu dưới dạng 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 tập lệnh thử nghiệm.

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);					
// Nagigate 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 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ẽ sao chép đị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 thử nghiệm dưới đây làm ví dụ.

  • Nhấp vào liên kết Kiểm tra thiết bị di động bằng XPATH
  • Điều hướng Quay lại trang chủ
  • Nhập dữ liệu vào hộp 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 sẽ được 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 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 dự án của mình trước khi tiếp tục mã.

  • jaxen.jar
  • dom4j-1.6.jar

2. Dưới đây là đoạn code đọc dữ liệu từ file 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. Ban đầu, 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. 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 tập lệnh thử nghiệm bằng cách đọc dữ liệu từ tệp XML và chuyển dữ liệu dưới dạng 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 tập lệnh thử nghiệm.

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

Tổng kết

  • Kho lưu trữ đối tượng là vị trí lưu trữ chung cho tất cả các đối tượng
  • Selenium Theo mặc định, WebDriver không cung cấp kho lưu trữ đối tượng được xây dựng sẵn
  • Bạn có thể tạo 2 loại Kho lưu trữ đối tượng trong Selenium
    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
  • Tệp thuộc tính là tệp văn bản trong đó dữ liệu được lưu trữ dưới dạng cặp khóa-giá trị
  • Định dạng tệp XML sẽ sao chép định dạng HTML mà trang web được xây dựng dựa trên đó.