การทดสอบฐานข้อมูลโดยใช้ Selenium และ JDBC: วิธีการเชื่อมต่อ?

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

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

  • 🔌 บริดจ์ JDBC: Selenium WebDriver ทำหน้าที่ควบคุมเฉพาะเบราว์เซอร์เท่านั้น ส่วน JDBC ทำหน้าที่เป็นส่วนประมวลผลฐานข้อมูลสำหรับการตรวจสอบข้อมูลทุกครั้ง
  • 🧩 ประเภทผู้ขับขี่: ทันสมัย MySQL Connector/J จะลงทะเบียน com.mysql.cj.jdbc.Driver โดยอัตโนมัติ ดังนั้นการเรียกใช้ Class.forName อย่างชัดเจนจึงเป็นทางเลือก
  • 🔗 สตริงการเชื่อมต่อ: A MySQL URL ตามรูปแบบ jdbc:mysql://host:3306/database โดยที่ 3306 เป็นพอร์ตเริ่มต้นของเซิร์ฟเวอร์
  • 📥 การจัดการผลลัพธ์: Statement.executeQuery จะส่งคืน ResultSet ซึ่งคุณสามารถวนซ้ำด้วย next() และอ่านค่าผ่าน getString ได้
  • 🛡️ ความปลอดภัยของทรัพยากร: try-with-resources จะปิด Connection, Statement และ ResultSet แม้ว่าการตรวจสอบจะล้มเหลวในระหว่างดำเนินการก็ตาม
  • 🚀 สอบถามเกี่ยวกับสุขอนามัย: พารามิเตอร์ PreparedStatement ช่วยขจัดความเสี่ยงจากการโจมตีแบบ Injection และช่วยให้เซิร์ฟเวอร์สามารถนำแผนการดำเนินการที่แคชไว้กลับมาใช้ใหม่ได้

การทดสอบฐานข้อมูลโดยใช้ Selenium

การเชื่อมต่อฐานข้อมูลใน Selenium

Selenium Webdriver ถูกจำกัดไว้ที่ การทดสอบ แอปพลิเคชันของคุณโดยใช้เบราว์เซอร์ ใช้ Selenium Webdriver สำหรับการตรวจสอบฐานข้อมูลคุณต้องใช้ JDBC (“Java การเชื่อมต่อฐานข้อมูล”)

เจดีบีซี (Java การเชื่อมต่อฐานข้อมูล) คือ SQL API ระดับที่ช่วยให้คุณดำเนินการคำสั่ง SQL มีหน้าที่รับผิดชอบในการเชื่อมต่อระหว่าง Java ภาษาการเขียนโปรแกรมและฐานข้อมูลที่หลากหลาย JDBC API มีคลาสและอินเทอร์เฟซดังต่อไปนี้

  • ผู้จัดการไดร์เวอร์
  • คนขับรถ
  • การเชื่อมต่อ
  • คำแถลง
  • ชุดผลลัพธ์
  • SQLException

วิธีการเชื่อมต่อฐานข้อมูลใน Selenium

เพื่อทดสอบฐานข้อมูลของคุณโดยใช้ Seleniumคุณต้องปฏิบัติตาม 3 ขั้นตอนต่อไปนี้

เชื่อมต่อฐานข้อมูลเข้า Selenium

ขั้นตอนที่ 1) ทำการเชื่อมต่อกับฐานข้อมูล

เพื่อทำการเชื่อมต่อกับฐานข้อมูลไวยากรณ์คือ

DriverManager.getConnection(URL, "userid", "password" )

ที่นี่

  • Userid คือชื่อผู้ใช้ที่กำหนดค่าไว้ในฐานข้อมูล
  • รหัสผ่านของผู้ใช้ที่กำหนดค่าไว้
  • URL มีรูปแบบเป็น jdbc:< dbtype>://ipaddress:portnumber/db_name”
  • - ไดรเวอร์สำหรับฐานข้อมูลที่คุณพยายามเชื่อมต่อ หากต้องการเชื่อมต่อกับฐานข้อมูล Oracle ค่านี้จะเป็น “oracle” หากต้องการเชื่อมต่อกับฐานข้อมูลชื่อ “emp” ใน MySQL ค่านี้จะเป็น “error” URL จะเป็น jdbc:mysql://localhost:3036/emp

และโค้ดสำหรับสร้างการเชื่อมต่อก็หน้าตาประมาณนี้

Connection con = DriverManager.getConnection(dbUrl,username,password);

คุณต้องโหลดไดรเวอร์ JDBC โดยใช้รหัสด้วย

Class.forName("com.mysql.jdbc.Driver");
⚠️ คำเตือน: com.mysql.jdbc.Driver ถูกยกเลิกการใช้งานใน Connector/J เวอร์ชัน 8.0 แล้ว ให้ใช้ com.mysql.cj.jdbc.Driver แทน เนื่องจาก JDBC เวอร์ชัน 4.0 ขึ้นไป ไดรเวอร์จะลงทะเบียนตัวเองโดยอัตโนมัติ ดังนั้น Class.forName จึงเป็นตัวเลือกเสริม MySQL รับฟังที่หมายเลข 3306 ไม่ใช่ 3036

ขั้นตอนที่ 2) ส่งแบบสอบถามไปยังฐานข้อมูล

เมื่อทำการเชื่อมต่อแล้ว คุณจะต้องดำเนินการค้นหา

คุณสามารถใช้ Statement Object เพื่อส่งข้อความค้นหาได้

Statement stmt = con.createStatement();

เมื่อสร้างวัตถุคำสั่งแล้วให้ใช้วิธีการดำเนินการแบบสอบถามเพื่อดำเนินการคำสั่ง SQL

stmt.executeQuery(select *  from employee;);
⚠️ คำเตือน: executeQuery รับค่าเป็นสตริง ดังนั้นจึงต้องใส่เครื่องหมายคำพูดให้กับคำสั่ง SQL: executeQuery(“select * from employee”) ใช้ PreparedStatement สำหรับการป้อนข้อมูลจากผู้ใช้

ขั้นตอนที่ 3) ประมวลผลผลลัพธ์

ผลลัพธ์จากการสืบค้นที่ดำเนินการจะถูกจัดเก็บไว้ใน ResultSet Object

Java มีวิธีการล่วงหน้ามากมายเพื่อประมวลผลผลลัพธ์ วิธีการบางส่วนมีการระบุไว้ด้านล่าง

ประมวลผลผลลัพธ์

ตัวอย่างการทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอน 1) การติดตั้ง MySQL เซิร์ฟเวอร์ และ MySQL ม้านั่งทำงานของช่างเครื่อง

ลองดูคู่มือฉบับสมบูรณ์สำหรับ MySQL และ Mysql Workbench Good Farm Animal Welfare Awards

ขณะทำการติดตั้ง MySQL เซิร์ฟเวอร์โปรดทราบฐานข้อมูล

  • ชื่อผู้ใช้
  • รหัสผ่าน
  • หมายเลขพอร์ต

โดยจะต้องดำเนินการในขั้นตอนต่อไป

MySQL Workbench ทำให้การจัดการฐานข้อมูลเป็นเรื่องง่ายโดยไม่จำเป็นต้องเขียนโค้ด SQL แม้ว่าคุณยังสามารถใช้ MySQL Terminal เพื่อโต้ตอบกับฐานข้อมูล

ขั้นตอน 2) In MySQL WorkBench เชื่อมต่อกับของคุณ MySQL เซิร์ฟเวอร์

การทดสอบฐานข้อมูลด้วย Selenium

ในหน้าจอถัดไป

  1. เลือกอินสแตนซ์ในเครื่องของ MySQL
  2. ป้อนหมายเลขพอร์ต
  3. ป้อนชื่อผู้ใช้
  4. ใส่รหัสผ่าน
  5. คลิกตกลง

การทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอน 3) ในการสร้างฐานข้อมูล

  1. คลิกสร้างปุ่มสคีมา
  2. ป้อนชื่อของสคีมา/ฐานข้อมูล
  3. คลิกนำไปใช้

การทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอน 4) ในเมนูเนวิเกเตอร์

  1. คลิกที่ตาราง ใต้ฐานข้อมูล emp
  2. ป้อนชื่อตารางเป็นพนักงาน
  3. ป้อนฟิลด์เป็นชื่อและอายุ
  4. คลิกนำไปใช้

การทดสอบฐานข้อมูลด้วย Selenium

คุณจะเห็นหน้าต่างป๊อปอัปต่อไปนี้ คลิกนำไปใช้

การทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอน 5) เราจะสร้างข้อมูลต่อไปนี้

ชื่อ อายุ
Top 25
Nick 36
Bill 47

เพื่อสร้างข้อมูลลงในตาราง

  1. ในเนวิเกเตอร์ ให้เลือกตารางพนักงาน
  2. ในบานหน้าต่างด้านขวา คลิกตัวแก้ไขฟอร์ม
  3. กรอกชื่อและอายุ
  4. คลิกนำไปใช้

การทดสอบฐานข้อมูลด้วย Selenium

ทำซ้ำขั้นตอนนี้จนกว่าจะสร้างข้อมูลทั้งหมด

การทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอน 6) ดาวน์โหลด MySQL ตัวเชื่อมต่อ JDBC Good Farm Animal Welfare Awards

การทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอน 7) เพิ่ม Jar ที่ดาวน์โหลดมาลงในโปรเจ็กต์ของคุณ

  1. คลิกขวาที่ .ของคุณ Java ไฟล์ จากนั้นคลิกที่ Build Path → Configure build path
  2. เลือกห้องสมุด
  3. คลิกที่เพิ่ม JAR ภายนอก
  4. ท่านสามารถเข้าดู MySQL ตัวเชื่อมต่อ Java ในไลบรารีของคุณ
  5. คลิกที่เปิดเพื่อเพิ่มลงในโครงการ

การทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอน 8) คัดลอกโค้ดต่อไปนี้ลงในตัวแก้ไข

Package  htmldriver;		
import  java.sql.Connection;		
import  java.sql.Statement;		
import  java.sql.ResultSet;		
import  java.sql.DriverManager;		
import  java.sql.SQLException;		
public class  SQLConnector {				
    	public static void  main(String[] args) throws  ClassNotFoundException, SQLException {													
				//Connection URL Syntax: "jdbc:mysql://ipaddress:portnumber/db_name"		
                String dbUrl = "jdbc:mysql://localhost:3036/emp";					

				//Database Username		
				String username = "root";	
                
				//Database Password		
				String password = "guru99";				

				//Query to Execute		
				String query = "select *  from employee;";	
                
         	    //Load mysql jdbc driver		
           	    Class.forName("com.mysql.jdbc.Driver");			
           
           		//Create Connection to DB		
            	Connection con = DriverManager.getConnection(dbUrl,username,password);
          
          		//Create Statement Object		
        	   Statement stmt = con.createStatement();					
       
       			// Execute the SQL Query. Store results in ResultSet		
         		ResultSet rs= stmt.executeQuery(query);							
         
         		// While Loop to iterate through all data and print results		
				while (rs.next()){
			        		String myName = rs.getString(1);								        
                            String myAge = rs.getString(2);					                               
                            System. out.println(myName+"  "+myAge);		
                    }		
      			 // closing DB Connection		
      			con.close();			
		}
}
⚠️ คำเตือน: รายการถูกเก็บรักษาไว้ตามที่เผยแพร่ไว้ ตัวเทียบเคียงที่ทันสมัย: com.mysql.cj.jdbc.Driver, พอร์ต 3306, แพ็กเกจตัวพิมพ์เล็ก และ try-with-resources สำหรับการล้างข้อมูล

ขั้นตอน 9) รันโค้ดและตรวจสอบผลลัพธ์

การทดสอบฐานข้อมูลด้วย Selenium

ขั้นตอนเดียวกันนี้สามารถนำไปใช้กับฐานข้อมูลเชิงสัมพันธ์ใดๆ ก็ได้

ไดรเวอร์ JDBC และสตริงการเชื่อมต่อสำหรับฐานข้อมูลยอดนิยม

MySQL เป็นเพียงตัวเลือกหนึ่งเท่านั้น รูปแบบ JDBC ยังคงเหมือนเดิมในทุกเอนจิ้น: การนำเข้า การเรียกใช้คำสั่ง และลูป ResultSet ไม่เปลี่ยนแปลง มีเพียงอาร์ติแฟกต์ไดรเวอร์และเท่านั้นที่เปลี่ยนแปลง URL เนื่องจากมีความแตกต่างกัน ดังนั้นให้ใช้ตารางด้านล่างเมื่อแอปพลิเคชันที่กำลังทดสอบทำงานบนฐานข้อมูลอื่น

ฐานข้อมูล คลาสคนขับ ตัวอย่างการเชื่อมต่อ URL พอร์ตเริ่มต้น
MySQL com.mysql.cj.jdbc.Driver jdbc:mysql://localhost:3306/emp 3306
PostgreSQL org.postgresql.Driver jdbc:postgresql://localhost:5432/emp 5432
Oracle oracle.jdbc.Oracleคนขับรถ jdbc:oracle:thin:@localhost:1521:orcl 1521
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://localhost:1433;databaseName=emp 1433

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

ไดรเวอร์แต่ละตัวจะถูกจัดส่งในรูปแบบไฟล์ JAR เดียว ซึ่งคุณจะต้องเพิ่มลงใน build path ตามที่แสดงในขั้นตอนที่ 7 ทุกเอ็นจิ้นที่ระบุไว้ข้างต้นจะลงทะเบียนตัวเองโดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องมีบรรทัด Class.forName นั่นหมายความว่าเมธอดตัวช่วยเพียงเมธอดเดียวก็สามารถใช้งานได้กับทุกสภาพแวดล้อมที่ชุดทดสอบของคุณกำหนดเป้าหมายไว้

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

ไม่ ตั้งแต่ JDBC 4.0 (Java 6) DriverManager ค้นหาไดรเวอร์ผ่านกลไก ServiceLoader ดังนั้นการเพิ่มไฟล์ JAR ของ Connector/J ลงใน classpath ก็เพียงพอแล้ว เก็บการเรียกใช้ไว้เฉพาะในกรณีที่คอนเทนเนอร์แบบเดิมไม่สามารถลงทะเบียนไดรเวอร์โดยอัตโนมัติได้

ไฟล์ JAR Connector/J หายไปจาก classpath ของรันไทม์ หรือ... URL มีรูปแบบไม่ถูกต้อง ตรวจสอบว่าไฟล์ JAR ปรากฏอยู่ในรายการไลบรารีที่อ้างอิง และตรวจสอบว่า... URL เริ่มต้นด้วย jdbc:mysql:// และระบุชื่อโฮสต์และพอร์ตที่สามารถเข้าถึงได้

ใช่ครับ ผู้ช่วยเช่น นักบิน GitHub สร้างตัวช่วยการเชื่อมต่อโครงสร้าง, ลูป ResultSet และการยืนยันจากคำอธิบายสคีมา Revตรวจสอบทุกคำสั่ง SQL ที่สร้างขึ้นเพื่อให้แน่ใจว่าชื่อตารางถูกต้องและปลอดภัยจากการโจมตีแบบ Injection ก่อนที่จะยืนยันคำสั่งนั้น

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

เสมอ การไม่ปิด Connection หรือ ResultSet จะทำให้พูลการเชื่อมต่อของเซิร์ฟเวอร์หมดไปเมื่อทำการทดสอบเป็นเวลานาน ควรใช้ try-with-resources ครอบการเชื่อมต่อเหล่านั้น หรือปิดการเชื่อมต่อเหล่านั้นในบล็อก @AfterMethod เพื่อให้การล้างข้อมูลทำงานแม้ว่าการตรวจสอบจะล้มเหลวก็ตาม

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