ที่เก็บวัตถุใน Selenium

⚡ สรุปอย่างชาญฉลาด

ที่เก็บวัตถุใน Selenium วิธีนี้ช่วยรวมตัวระบุตำแหน่งขององค์ประกอบไว้ในไฟล์ภายนอกไฟล์เดียว แยกออกจากสคริปต์ทดสอบ ซึ่งช่วยให้การบำรุงรักษาง่ายขึ้น และช่วยให้ผู้ทดสอบสามารถอัปเดตตัวระบุตำแหน่งได้ในที่เดียว แทนที่จะต้องแก้ไขกรณีทดสอบหลายๆ กรณี

  • 🗂️ แนวคิดหลัก: จัดเก็บตัวระบุตำแหน่งส่วนติดต่อผู้ใช้ในรูปแบบคู่คีย์-ค่า โดยแยกเก็บไว้ต่างหาก Selenium ตรรกะการทดสอบ WebDriver
  • 📄 แนวทางการใช้ไฟล์คุณสมบัติ: จัดเก็บตัวระบุตำแหน่งไว้ในไฟล์ข้อความ .properties ซึ่งจะอ่านได้ในระหว่างการทำงานผ่านคลาส java.util.Properties
  • 🧩 วิธีการใช้ไฟล์ XML: ใช้ไฟล์ XML ที่มี Document Object Model และ dom4j เพื่ออ่านตัวระบุตำแหน่งผ่าน selectSingleNode
  • 🔧 ขั้นตอนการดำเนินการ: สร้างไฟล์ จัดเก็บข้อมูลแบบคู่คีย์-ค่า อ่านค่าลงในตัวแปร จากนั้นส่งตัวแปรเหล่านั้นไปยังฟังก์ชัน findElement
  • 🛡️ ผลประโยชน์การบำรุงรักษา: เมื่อมีการเปลี่ยนแปลงตำแหน่งที่ตั้ง ให้ทำการอัปเดตเฉพาะไฟล์ในที่เก็บข้อมูลเท่านั้น ไม่จำเป็นต้องอัปเดตทุกกรณีทดสอบที่ได้รับผลกระทบ

ที่เก็บวัตถุใน Selenium

พื้นที่เก็บข้อมูลวัตถุคืออะไร?

ที่เก็บอ็อบเจ็กต์คือที่เก็บข้อมูลทั่วไปสำหรับอ็อบเจ็กต์ทั้งหมด ใน Selenium บริบทของ WebDriver โดยทั่วไปออบเจ็กต์จะเป็นตัวระบุตำแหน่งที่ใช้ในการระบุองค์ประกอบเว็บโดยไม่ซ้ำกัน

ข้อดีหลักของการใช้คลังเก็บวัตถุคือการแยกวัตถุออกจากกรณีทดสอบ หากค่าตัวระบุตำแหน่งขององค์ประกอบเว็บหนึ่งเปลี่ยนแปลงไป ก็จำเป็นต้องเปลี่ยนแปลงเฉพาะคลังเก็บวัตถุเท่านั้น ไม่จำเป็นต้องเปลี่ยนแปลงในทุกกรณีทดสอบที่ใช้ตัวระบุตำแหน่งนั้น การดูแลรักษาคลังเก็บวัตถุช่วยเพิ่มความเป็นโมดูลาร์ของการใช้งานเฟรมเวิร์ก

ประเภทของที่เก็บวัตถุใน Selenium เว็บไดร์เวอร์

Selenium WebDriver ไม่ได้มีคลังเก็บอ็อบเจ็กต์ในตัวมาให้โดยค่าเริ่มต้น อย่างไรก็ตาม สามารถสร้างคลังเก็บอ็อบเจ็กต์ได้โดยใช้แนวทางคู่คีย์-ค่า โดยที่คีย์หมายถึงชื่อที่กำหนดให้กับอ็อบเจ็กต์ และค่าหมายถึงคุณสมบัติที่ใช้ระบุอ็อบเจ็กต์นั้นได้อย่างเฉพาะเจาะจงภายในหน้าเว็บ

ต่อไปนี้เป็นประเภทของที่เก็บวัตถุที่สามารถสร้างได้ใน Selenium เว็บไดร์เวอร์

  1. พื้นที่เก็บข้อมูลวัตถุโดยใช้ไฟล์คุณสมบัติ
  2. พื้นที่เก็บข้อมูลวัตถุโดยใช้ไฟล์ XML

Selenium พื้นที่เก็บข้อมูลวัตถุไดรเวอร์เว็บโดยใช้ไฟล์คุณสมบัติ

ในแนวทางนี้ ไฟล์คุณสมบัติคือไฟล์ข้อความที่จัดเก็บข้อมูลในรูปแบบคู่คีย์-ค่า บทช่วยสอนด้านล่างนี้จะกล่าวถึงหัวข้อต่อไปนี้

ขั้นตอนที่ 1) การสร้างไฟล์คุณสมบัติใน Eclipse

  1. ก่อนอื่น ต้องสร้างโครงสร้างโปรเจ็กต์ Java ด้านล่างนี้ใน Eclipse ก่อน โดยชื่อโปรเจ็กต์และชื่อแพ็กเกจสามารถเป็นชื่อใดก็ได้ที่ถูกต้อง

การสร้างไฟล์คุณสมบัติใน Eclipse

  1. คลิกขวาที่โฟลเดอร์โปรเจ็กต์หลัก แล้วเลือก ใหม่ -> อื่นๆ

การสร้างไฟล์คุณสมบัติใน Eclipse

  1. ในหน้าต่างถัดไป เลือก ทั่วไป -> ไฟล์ แล้วคลิกปุ่ม 'ถัดไป'

การสร้างไฟล์คุณสมบัติใน Eclipse

  1. ในหน้าต่างสร้างไฟล์ใหม่ ให้ระบุชื่อไฟล์ที่ถูกต้องโดยมีนามสกุล '.properties' แล้วคลิกปุ่ม 'เสร็จสิ้น'

การสร้างไฟล์คุณสมบัติใน Eclipse

  1. ไฟล์ชื่อ 'application.properties' จะต้องแสดงอยู่ในโครงสร้างโปรเจ็กต์

การสร้างไฟล์คุณสมบัติใน Eclipse

ขั้นตอนที่ 2) จัดเก็บข้อมูลลงในไฟล์คุณสมบัติ

  1. ข้อมูลจะถูกจัดเก็บไว้ในไฟล์คุณสมบัติในรูปแบบคู่คีย์-ค่า โดยที่คีย์จะต้องไม่ซ้ำกันตลอดทั้งไฟล์
  2. เราจะลองใช้ไฟล์คุณสมบัติเพื่อระบุองค์ประกอบเว็บโดยใช้ค่าตัวระบุตำแหน่ง
  3. เปิดไฟล์ application.properties ใน Eclipse และเก็บข้อมูลต่อไปนี้
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

การจัดเก็บข้อมูลลงในไฟล์คุณสมบัติ

4) สำหรับบทช่วยสอนนี้ จะใช้เว็บไซต์สาธิตต่อไปนี้:

https://demo.guru99.com/test/guru99home/นี่คือสถานการณ์ทดสอบ:

  • คลิกที่ลิงก์ การทดสอบบนมือถือโดยใช้ XPATH
  • ย้อนกลับ
  • ป้อนข้อมูลลงในช่องข้อความอีเมลโดยใช้รหัสประจำตัว
  • คลิกที่ปุ่มลงทะเบียนโดยใช้ ID

ขั้นตอนที่ 3) อ่านข้อมูลจากไฟล์คุณสมบัติ

  1. การอ่านข้อมูลจากไฟล์คุณสมบัติสามารถทำได้โดยใช้คลาส Properties ที่มีอยู่ในแพ็กเกจ java.util
  2. ในขั้นต้น จำเป็นต้องสร้างอ็อบเจ็กต์ของคลาส Properties ดังต่อไปนี้
  Properties obj = new Properties();
  1. เราจำเป็นต้องสร้างอ็อบเจ็กต์ของคลาส FileInputStream โดยระบุพาธไปยังไฟล์คุณสมบัติ
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. การอ่านข้อมูลจากไฟล์คุณสมบัติสามารถทำได้โดยใช้เมธอด `load` ที่มีอยู่ในคลาส `Properties` ในภาษา Java โค้ดด้านล่างแสดงวิธีการใช้งานเมธอด `load`
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

สตริง 'mobileTesting' จะมี XPATH เพื่อระบุลิงก์การทดสอบมือถือภายในหน้าเว็บ

ขั้นตอนที่ 4) การใช้ไฟล์คุณสมบัติในสคริปต์ทดสอบ

ไฟล์คุณสมบัติสามารถนำมาใช้ในสคริปต์ทดสอบได้โดยการอ่านข้อมูลจากไฟล์คุณสมบัติและส่งข้อมูลนั้นเป็นพารามิเตอร์ไปยังเมธอด findElement โค้ดด้านล่างแสดงตัวอย่างการใช้งานข้อมูลที่อ่านจากไฟล์คุณสมบัติในสคริปต์ทดสอบ

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();

ด้านล่างนี้เป็นรหัสที่สมบูรณ์ที่ใช้สำหรับสถานการณ์การทดสอบข้างต้น

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 พื้นที่เก็บข้อมูลวัตถุ WebDriver โดยใช้ไฟล์ XML

XML ย่อมาจาก Extensible Markup Language ไฟล์ XML ใช้ Document Object Model (DOM) เป็นโครงสร้างพื้นฐาน รูปแบบไฟล์ XML จะจำลองรูปแบบ HTML ซึ่งเป็นพื้นฐานในการสร้างเว็บเพจ หัวข้อที่จะกล่าวถึงมีดังต่อไปนี้

ขั้นตอนที่ 1) การสร้างไฟล์ XML ใน Eclipse

  1. จำเป็นต้องสร้างโครงสร้างโปรเจ็กต์ Java ด้านล่าง Eclipse.

การสร้างไฟล์ XML ใน Eclipse

  1. คลิกขวาที่โฟลเดอร์โปรเจ็กต์ เลือก New -> Other

การสร้างไฟล์ XML ใน Eclipse

  1. เลือกไฟล์ XML ภายในโฟลเดอร์ XML แล้วคลิกปุ่ม 'ถัดไป'

การสร้างไฟล์ XML ใน Eclipse

  1. ป้อนชื่อไฟล์ XML ที่ถูกต้อง แล้วคลิกปุ่ม 'เสร็จสิ้น'

การสร้างไฟล์ XML ใน Eclipse

  1. ไฟล์ XML จะถูกเพิ่มลงในโฟลเดอร์โครงการดังที่แสดงด้านล่าง

การสร้างไฟล์ XML ใน Eclipse

ขั้นตอนที่ 2) การจัดเก็บข้อมูลลงในไฟล์ XML

ข้อมูลสามารถจัดเก็บในไฟล์ XML ในรูปแบบของ Document Object Model (DOM) เพื่อความง่าย เราจะใช้สถานการณ์ทดสอบด้านล่างเป็นตัวอย่าง

  • คลิกที่ลิงก์ การทดสอบบนมือถือโดยใช้ XPATH
  • กลับไปยังหน้าแรก
  • ป้อนข้อมูลลงในช่องข้อความอีเมลโดยใช้รหัสประจำตัว
  • คลิกที่ปุ่มลงทะเบียนโดยใช้ ID

ด้านล่างนี้คือรูปแบบของไฟล์ XML ที่จะใช้

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

เก็บโค้ด XML ข้างต้นไว้ใน properties.xml

การจัดเก็บข้อมูลบนไฟล์ XML

ในแท็บการออกแบบ คุณจะเห็น

การจัดเก็บข้อมูลบนไฟล์ XML

ขั้นตอนที่ 3) อ่านข้อมูลจากไฟล์ XML

1. การอ่านข้อมูลจากไฟล์ XML สามารถทำได้โดยใช้คลาส 'dom4j' ที่มีอยู่ใน Java โปรดทราบว่าคุณต้องเพิ่มไฟล์ JAR ต่อไปนี้ลงใน build path ของโปรเจ็กต์ก่อนดำเนินการเขียนโค้ดต่อไป

  • jaxen.jar
  • dom4j-1.6.jar

2. ด้านล่างนี้คือโค้ดสำหรับอ่านข้อมูลจากไฟล์ 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. ในขั้นต้น เราต้องสร้างอ็อบเจ็กต์ File และส่งเป็นพารามิเตอร์ให้กับเมธอด 'read' ของคลาส SAXReader เมื่ออ่านข้อมูลไฟล์ XML ได้สำเร็จแล้ว เราสามารถเข้าถึงแต่ละโหนดของเอกสาร XML ได้โดยใช้เมธอด 'selectSingleNode'

ขั้นตอนที่ 4) การใช้ไฟล์ XML ในสคริปต์ทดสอบ

สามารถใช้ไฟล์ XML ในสคริปต์ทดสอบได้โดยการอ่านข้อมูลจากไฟล์ XML และส่งข้อมูลนั้นเป็นพารามิเตอร์ไปยังเมธอด findElement โค้ดด้านล่างแสดงตัวอย่างการใช้งานข้อมูลที่อ่านจากไฟล์ XML ในสคริปต์ทดสอบ

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

โค้ดด้านล่างแสดงวิธีการใช้งานไฟล์ XML ใน 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();

    }
}

ดาวน์โหลด WebDriver Eclipse โครงการ

คำถามที่พบบ่อย

Object Repository จะเก็บเฉพาะตัวระบุตำแหน่งขององค์ประกอบไว้ภายนอกเท่านั้น ในขณะที่ Page Object Model เป็นรูปแบบที่ครอบคลุมกว่า โดยจะรวมตัวระบุตำแหน่งและการกระทำของหน้าเว็บไว้ภายในคลาสของหน้าเว็บ

ใช่แล้ว ข้อมูลระบุตำแหน่งสามารถจัดเก็บไว้ในไฟล์ Excel หรือ CSV ได้เช่นกัน โดยใช้ไลบรารีอย่าง Apache POI ในการอ่านข้อมูล แล้วส่งต่อไปยังฟังก์ชัน findElement

ใช้คีย์ที่ชัดเจนและสื่อความหมาย จัดกลุ่มตัวระบุตำแหน่งตามหน้า เลือกใช้ตัวระบุตำแหน่งที่เสถียร เช่น ID และหลีกเลี่ยงการใช้ตัวระบุตำแหน่งซ้ำซ้อน เก็บโมดูลไว้ในที่เก็บข้อมูลเดียว เพื่อให้การเปลี่ยนแปลงตัวระบุตำแหน่งอัปเดตเพียงรายการเดียว

ใช่แล้ว มีเครื่องมือที่ใช้ AI ช่วยเหลือหลายอย่างในการสแกนหน้าเว็บ ตรวจจับองค์ประกอบ และส่งออกตัวระบุตำแหน่งสำเร็จรูปไปยังที่เก็บข้อมูล ผู้ทดสอบควรตรวจสอบความเสถียรของตัวระบุตำแหน่งเหล่านั้นอีกครั้ง

ระบบ AI ที่สามารถแก้ไขตัวเองได้จะตรวจสอบคุณลักษณะขององค์ประกอบระหว่างการทำงาน และเมื่อตัวระบุตำแหน่งที่จัดเก็บไว้เสียหาย ระบบจะเลือกตัวระบุตำแหน่งอื่นที่ตรงกันโดยอัตโนมัติ วิธีนี้ช่วยให้การทดสอบดำเนินต่อไปได้แม้จะมีการเปลี่ยนแปลงเล็กน้อยในส่วนติดต่อผู้ใช้ และลดค่าใช้จ่ายในการบำรุงรักษา

สรุปโพสต์นี้ด้วย: