Kiểm thử cơ sở dữ liệu bằng cách sử dụng Selenium và JDBC: Cách kết nối?

⚡ Tóm tắt thông minh

Kiểm thử cơ sở dữ liệu bằng cách sử dụng Selenium Nó dựa vào JDBC, vì bản thân WebDriver chỉ xác thực ở lớp trình duyệt. Các bước này hướng dẫn cách mở một MySQL Kết nối, chạy câu lệnh SQL, đọc tập kết quả và xác minh dữ liệu đã lưu trữ.

  • 🔌 Cầu nối JDBC: Selenium WebDriver chỉ điều khiển trình duyệt, còn JDBC cung cấp lớp cơ sở dữ liệu cho mọi thao tác xác thực dữ liệu.
  • 🧩 Hạng tài xế: hiện đại MySQL Connector/J tự động đăng ký com.mysql.cj.jdbc.Driver, vì vậy việc gọi Class.forName một cách tường minh là không bắt buộc.
  • 🔗 Chuỗi kết nối: A MySQL URL Nó tuân theo jdbc:mysql://host:3306/database, và 3306 là cổng máy chủ mặc định.
  • 📥 Xử lý kết quả: Statement.executeQuery trả về một ResultSet, bạn có thể lặp qua ResultSet đó bằng next() và đọc thông qua getString.
  • 🛡️ An toàn tài nguyên: try-with-resources sẽ đóng Connection, Statement và ResultSet ngay cả khi một khẳng định thất bại giữa chừng.
  • 🚀 Truy vấn về vệ sinh: Các tham số PreparedStatement loại bỏ rủi ro tấn công injection và cho phép máy chủ tái sử dụng kế hoạch thực thi đã được lưu trong bộ nhớ cache.

Kiểm tra cơ sở dữ liệu bằng cách sử dụng Selenium

Kết nối cơ sở dữ liệu trong Selenium

Selenium Webdriver được giới hạn ở Kiểm tra ứng dụng của bạn bằng Trình duyệt. Để sử dụng Selenium Webdriver để xác minh cơ sở dữ liệu bạn cần sử dụng JDBC (“Java Kết nối cơ sở dữ liệu”).

JDBC (Java Kết nối cơ sở dữ liệu) là một SQL API cấp độ cho phép bạn thực thi các câu lệnh SQL. Nó chịu trách nhiệm kết nối giữa Java Ngôn ngữ lập trình và nhiều cơ sở dữ liệu. API JDBC cung cấp các lớp và giao diện sau

  • Quản lý tài xế
  • Người lái xe
  • Kết nối
  • Tuyên bố
  • Bộ kết quả
  • Ngoại lệ SQL

Cách kết nối cơ sở dữ liệu trong Selenium

Để kiểm tra Cơ sở dữ liệu của bạn bằng cách sử dụng Selenium, bạn cần phải tuân thủ 3 bước sau

Kết nối cơ sở dữ liệu trong Selenium

Bước 1) Tạo kết nối tới Cơ sở dữ liệu

Để tạo kết nối tới cơ sở dữ liệu, cú pháp là

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

Ở đây,

  • Userid là tên người dùng được cấu hình trong cơ sở dữ liệu
  • Mật khẩu của người dùng được cấu hình
  • URL có định dạng jdbc:< dbtype>://ipaddress:portnumber/db_name”
  • - Trình điều khiển cho cơ sở dữ liệu bạn đang cố gắng kết nối. Để kết nối với cơ sở dữ liệu Oracle, giá trị này sẽ là “oracle”. Để kết nối với cơ sở dữ liệu có tên “emp” trong MySQL. URL sẽ là jdbc:mysql://localhost:3036/emp

Và mã để tạo kết nối trông như thế này

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

Bạn cũng cần tải Trình điều khiển JDBC bằng mã

Class.forName("com.mysql.jdbc.Driver");
⚠️ Cảnh báo: Lớp `com.mysql.jdbc.Driver` đã bị loại bỏ trong Connector/J 8.0. Hãy sử dụng `com.mysql.cj.jdbc.Driver`. Từ JDBC 4.0 trở đi, trình điều khiển tự đăng ký, do đó `Class.forName` là tùy chọn. MySQL Nghe trên tần số 3306, chứ không phải 3036.

Bước 2) Gửi truy vấn đến cơ sở dữ liệu

Sau khi kết nối được thực hiện, bạn cần thực hiện các truy vấn.

Bạn có thể sử dụng Đối tượng câu lệnh để gửi truy vấn.

Statement stmt = con.createStatement();

Khi đối tượng câu lệnh được tạo, hãy sử dụng phương thức execQuery để thực thi các truy vấn SQL

stmt.executeQuery(select *  from employee;);
⚠️ Cảnh báo: Hàm executeQuery nhận một chuỗi (String), vì vậy hãy trích dẫn câu lệnh SQL: executeQuery(“select * from employee”). Sử dụng PreparedStatement để người dùng nhập dữ liệu.

Bước 3) Xử lý kết quả

Kết quả từ truy vấn đã thực hiện được lưu trữ trong Đối tượng ResultSet.

Java cung cấp vô số phương pháp nâng cao để xử lý kết quả. Một số phương pháp được liệt kê dưới đây

Xử lý kết quả

Ví dụ về kiểm tra cơ sở dữ liệu với Selenium

Bước 1) đặt MySQL của chúng tôi MySQL Workbench

Xem hướng dẫn đầy đủ về Mysql & Mysql Workbench đây

Trong khi cài đặt MySQL Máy chủ, xin vui lòng lưu ý cơ sở dữ liệu

  • Tên đăng nhập (Username)
  • Mật khẩu
  • Số cổng

Nó sẽ được yêu cầu trong các bước tiếp theo.

MySQL Workbench giúp bạn dễ dàng quản trị cơ sở dữ liệu mà không cần viết mã SQL. Mặc dù vậy, bạn cũng có thể sử dụng MySQL Terminal để tương tác với cơ sở dữ liệu.

Bước 2) In MySQL WorkBench, kết nối với MySQL của chúng tôi

Kiểm tra cơ sở dữ liệu với Selenium

Trong màn hình tiếp theo,

  1. Chọn phiên bản cục bộ của MySQL
  2. Nhập số cổng
  3. Điền tên đăng nhập
  4. Nhập mật khẩu
  5. nhấn OK

Kiểm tra cơ sở dữ liệu với Selenium

Bước 3) Để tạo cơ sở dữ liệu,

  1. Nhấp vào nút tạo lược đồ
  2. Nhập tên lược đồ/cơ sở dữ liệu
  3. Nhấp vào Áp dụng

Kiểm tra cơ sở dữ liệu với Selenium

Bước 4) Trong menu điều hướng,

  1. Bấm vào Bảng, bên dưới cơ sở dữ liệu emp
  2. Nhập tên bảng là nhân viên
  3. Nhập các trường dưới dạng Tên và Tuổi
  4. Nhấp vào Áp dụng

Kiểm tra cơ sở dữ liệu với Selenium

Bạn sẽ thấy cửa sổ bật lên sau. Nhấp vào Áp dụng

Kiểm tra cơ sở dữ liệu với Selenium

Bước 5) Chúng tôi sẽ tạo dữ liệu sau

Họ tên Độ tuổi
Áo sơ mi 25
Nick 36
Bill 47

Để tạo dữ liệu vào bảng

  1. Trong trình điều hướng, chọn bảng nhân viên
  2. Ở ngăn bên phải, bấm vào Trình chỉnh sửa biểu mẫu
  3. Nhập tên và tuổi
  4. Nhấp vào Áp dụng

Kiểm tra cơ sở dữ liệu với Selenium

Lặp lại quá trình cho đến khi tất cả dữ liệu được tạo

Kiểm tra cơ sở dữ liệu với Selenium

Bước 6) Tải về MySQL Trình kết nối JDBC đây

Kiểm tra cơ sở dữ liệu với Selenium

Bước 7) Thêm Jar đã tải xuống vào Dự án của bạn

  1. Nhấp chuột phải vào của bạn Java Tệp. Sau đó nhấp vào Đường dẫn xây dựng → Cấu hình đường dẫn xây dựng
  2. Chọn các thư viện
  3. Nhấp vào thêm JAR bên ngoài
  4. Bạn có thể thấy MySQL kết nối java trong thư viện của bạn
  5. Bấm vào mở để thêm nó vào dự án

Kiểm tra cơ sở dữ liệu với Selenium

Bước 8) Sao chép mã sau vào trình soạn thảo

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();			
		}
}
⚠️ Cảnh báo: Danh sách được giữ nguyên như khi xuất bản. Các phiên bản tương đương hiện đại: com.mysql.cj.jdbc.Driver, cổng 3306, gói lowercase và try-with-resources để dọn dẹp.

Bước 9) Thực thi mã và kiểm tra đầu ra

Kiểm tra cơ sở dữ liệu với Selenium

Các bước tương tự áp dụng cho bất kỳ công cụ cơ sở dữ liệu quan hệ nào.

Trình điều khiển JDBC và chuỗi kết nối cho các cơ sở dữ liệu phổ biến

MySQL Đây chỉ là một lựa chọn. Mô hình JDBC vẫn giữ nguyên trên tất cả các engine: các lệnh import, lệnh gọi Statement và vòng lặp ResultSet không thay đổi. Chỉ có thành phần trình điều khiển và... URL Vì có sự khác biệt, hãy sử dụng bảng bên dưới khi ứng dụng đang được kiểm thử chạy trên một cơ sở dữ liệu khác.

Cơ sở dữ liệu Lớp lái xe Ví dụ kết nối URL Cổng mặc định
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.OracleNgười lái xe jdbc:oracle:thin:@localhost:1521:orcl 1521
SQL server com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://localhost:1433;databaseName=emp 1433

Số cổng là nguyên nhân gây ra hầu hết các lỗi lần đầu tiên. Lỗi "kết nối bị từ chối" hầu như luôn có nghĩa là cổng trong... URL Cổng này không khớp với cổng mà máy chủ thực sự đang lắng nghe. Hãy kiểm tra cấu hình máy chủ của bạn trước khi cho rằng đó là cổng mặc định.

Mỗi trình điều khiển được đóng gói dưới dạng một tệp JAR duy nhất mà bạn thêm vào đường dẫn xây dựng chính xác như được hiển thị trong Bước 7. Mỗi công cụ được liệt kê ở trên đều tự động đăng ký, vì vậy không cần dòng Class.forName. Điều đó có nghĩa là một phương thức hỗ trợ duy nhất có thể phục vụ mọi môi trường mà bộ công cụ của bạn nhắm đến.

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

Không. Từ JDBC 4.0 trở đi (Java 6) DriverManager phát hiện các trình điều khiển thông qua cơ chế ServiceLoader, vì vậy chỉ cần thêm Connector/J JAR vào classpath là đủ. Chỉ giữ lại lệnh gọi này khi container cũ không thể tự động đăng ký trình điều khiển.

Tệp JAR Connector/J bị thiếu trong classpath thời gian chạy, hoặc URL bị lỗi định dạng. Hãy xác nhận JAR xuất hiện trong mục Thư viện được tham chiếu và kiểm tra xem... URL Bắt đầu bằng jdbc:mysql:// và chỉ định một máy chủ và cổng có thể truy cập được.

Vâng. Các trợ lý như... Trợ lý GitHub Tạo các công cụ hỗ trợ kết nối, vòng lặp ResultSet và các khẳng định từ mô tả lược đồ. RevHãy xem xét kỹ từng truy vấn được tạo ra để đảm bảo tên bảng chính xác và tính an toàn khi tấn công trước khi thực hiện.

Các mô hình AI tạo ra các hàng hạt giống thực tế, đề xuất các giá trị biên và gắn cờ các khẳng định bị sai lệch sau khi di chuyển lược đồ. Các nền tảng như... Testim Áp dụng điều này vào công tác bảo trì, mặc dù việc xem xét của con người vẫn cần thiết để đảm bảo tính toàn vẹn tham chiếu.

Luôn luôn. Một Connection hoặc ResultSet chưa được đóng sẽ làm cạn kiệt nhóm kết nối máy chủ trong suốt một chuỗi kiểm tra dài. Hãy bọc chúng trong khối try-with-resources, hoặc đóng chúng trong khối @AfterMethod để quá trình dọn dẹp vẫn chạy ngay cả khi một khẳng định thất bại.

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