Testowanie bazy danych za pomocą Selenium i JDBC: Jak się połączyć?

⚡ Inteligentne podsumowanie

Testowanie bazy danych przy użyciu Selenium Opiera się na JDBC, ponieważ sam WebDriver weryfikuje tylko warstwę przeglądarki. Te kroki pokazują, jak otworzyć MySQL połączenie, uruchom SQL, odczytaj zestaw wyników i zweryfikuj zapisane dane.

  • 🔌 Most JDBC: Selenium WebDriver steruje wyłącznie przeglądarką, więc JDBC dostarcza warstwę bazy danych dla każdego potwierdzenia danych.
  • 🧩 Klasa kierowcy: Nowoczesne technologie MySQL Connector/J rejestruje automatycznie com.mysql.cj.jdbc.Driver, więc jawne wywołanie Class.forName jest opcjonalne.
  • 🔗 Ciąg połączenia: A MySQL URL następuje po jdbc:mysql://host:3306/database, a 3306 to domyślny port serwera.
  • 📥 Obsługa wyników: Statement.executeQuery zwraca ResultSet, po którym można iterować za pomocą next() i odczytywać za pomocą getString.
  • 🛡️ Bezpieczeństwo zasobów: try-with-resources zamyka Connection, Statement i ResultSet nawet jeśli asercja zakończy się niepowodzeniem w połowie.
  • 🚀 Zapytanie o higienę: Parametry PreparedStatement eliminują ryzyko wstrzyknięcia i pozwalają serwerowi na ponowne wykorzystanie buforowanego planu wykonania.

Testowanie baz danych za pomocą Selenium

Połączenie z bazą danych w Selenium

Selenium Webdriver jest ograniczony do Testy swoje aplikacje za pomocą przeglądarki. Używać Selenium Webdriver do weryfikacji bazy danych, musisz użyć JDBC („Java Łączność z bazą danych”).

JDBC (Java Łączność z bazą danych) to a SQL Poziom API, który pozwala na wykonywanie instrukcji SQL. Odpowiada za łączność pomiędzy Java Język programowania i szeroki zakres baz danych. API JDBC udostępnia następujące klasy i interfejsy

  • Driver Manager
  • Kierowca
  • Przyłącze
  • Zestawienie sprzedaży
  • Zestaw wyników
  • Wyjątek SQL

Jak podłączyć bazę danych w Selenium

Aby przetestować bazę danych za pomocą Selenium, musisz przestrzegać następujących 3 kroków

Połącz bazę danych w Selenium

Krok 1) Nawiąż połączenie z bazą danych

Aby nawiązać połączenie z bazą danych, stosuje się składnię

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

Tutaj,

  • Userid to nazwa użytkownika skonfigurowana w bazie danych
  • Hasło skonfigurowanego użytkownika
  • URL ma format jdbc:< dbtype>://ipdress:portnumber/db_name”
  • - Sterownik bazy danych, z którą próbujesz się połączyć. Aby połączyć się z bazą danych Oracle, ta wartość będzie wynosić „oracle”. Aby połączyć się z bazą danych o nazwie „emp” w MYSQL. URL będzie jdbc:mysql://localhost:3036/emp

I wygląda kod do utworzenia połączenia

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

Musisz także załadować sterownik JDBC za pomocą kodu

Class.forName("com.mysql.jdbc.Driver");
⚠️ Ostrzeżenie: Sterownik com.mysql.jdbc.Driver został uznany za przestarzały w wersji Connector/J 8.0. Użyj com.mysql.cj.jdbc.Driver. Od wersji JDBC 4.0 sterownik rejestruje się automatycznie, więc parametr Class.forName jest opcjonalny. MySQL nasłuchuje na 3306, a nie 3036.

Krok 2) Wyślij zapytania do bazy danych

Po nawiązaniu połączenia należy wykonać zapytania.

Do wysyłania zapytań można używać obiektu instrukcji.

Statement stmt = con.createStatement();

Po utworzeniu obiektu instrukcji użyj metody wykonywaniaQuery w celu wykonania zapytań SQL

stmt.executeQuery(select *  from employee;);
⚠️ Ostrzeżenie: Funkcja executeQuery przyjmuje ciąg znaków, więc zacytuj kod SQL: executeQuery(“select * from employee”). Użyj PreparedStatement do wprowadzenia danych przez użytkownika.

Krok 3) Przetwórz wyniki

Wyniki wykonanego zapytania przechowywane są w obiekcie ResultSet.

Java zapewnia mnóstwo zaawansowanych metod przetwarzania wyników. Poniżej wymieniono kilka metod

Przetwarzaj wyniki

Przykład testowania bazy danych za pomocą Selenium

Krok 1) Zainstalować MySQL oraz MySQL Workbench

Sprawdź kompletny przewodnik po Mysql i Mysql Workbench w tym miejscu

Podczas instalacji MySQL Serwer, zwróć uwagę na bazę danych

  • Nazwa użytkownika
  • Hasło
  • Numer portu

Będzie to wymagane w dalszych krokach.

MySQL Workbench ułatwia administrowanie bazą danych bez konieczności kodowania SQL. Chociaż możesz także użyć MySQL Terminal do interakcji z bazą danych.

Krok 2) In MySQL WorkBench, połącz się ze swoim MySQL

Testowanie bazy danych za pomocą Selenium

Na następnym ekranie

  1. Wybierz lokalną instancję MySQL
  2. Wprowadź numer portu
  3. Wpisz nazwę użytkownika
  4. Wprowadź hasło
  5. kliknij OK

Testowanie bazy danych za pomocą Selenium

Krok 3) Aby utworzyć bazę danych,

  1. Kliknij przycisk Utwórz schemat
  2. Wprowadź nazwę schematu/bazy danych
  3. Kliknij Zastosuj

Testowanie bazy danych za pomocą Selenium

Krok 4) W menu nawigacyjnym

  1. Kliknij opcję Tabele pod bazą danych emp
  2. Wprowadź nazwę tabeli jako pracownik
  3. Wprowadź pola jako imię i wiek
  4. Kliknij Zastosuj

Testowanie bazy danych za pomocą Selenium

Zobaczysz następujące okno podręczne. Kliknij Zastosuj

Testowanie bazy danych za pomocą Selenium

Krok 5) Utworzymy następujące dane

Imię i nazwisko Wiek
Topy 25
Nick 36
Bill 47

Aby utworzyć dane w tabeli

  1. W nawigatorze wybierz tabelę pracowników
  2. W prawym okienku kliknij Edytor formularzy
  3. Wpisz imię i wiek
  4. Kliknij Zastosuj

Testowanie bazy danych za pomocą Selenium

Powtarzaj proces, aż zostaną utworzone wszystkie dane

Testowanie bazy danych za pomocą Selenium

Krok 6) Pobierz MySQL Złącze JDBC w tym miejscu

Testowanie bazy danych za pomocą Selenium

Krok 7) Dodaj pobrany Jar do swojego projektu

  1. Kliknij prawym przyciskiem myszy swój Java Plik. Następnie kliknij Ścieżka kompilacji → Konfiguruj ścieżkę kompilacji
  2. Wybierz biblioteki
  3. Kliknij dodaj zewnętrzne pliki JAR
  4. Możesz zobaczyć MySQL złącze Java w Twojej bibliotece
  5. Kliknij Otwórz, aby dodać go do projektu

Testowanie bazy danych za pomocą Selenium

Krok 8) Skopiuj poniższy kod do edytora

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();			
		}
}
⚠️ Ostrzeżenie: Lista zachowana w formie opublikowanej. Współczesne odpowiedniki: com.mysql.cj.jdbc.Driver, port 3306, pakiet pisany małymi literami i polecenie try-with-resources do czyszczenia.

Krok 9) Wykonaj kod i sprawdź dane wyjściowe

Testowanie bazy danych za pomocą Selenium

Te same kroki mają zastosowanie do każdego silnika relacyjnego.

Sterowniki JDBC i ciągi połączeń dla popularnych baz danych

MySQL To tylko jedna z opcji. Wzorzec JDBC pozostaje identyczny we wszystkich silnikach: importy, wywołanie instrukcji i pętla ResultSet nie ulegają zmianie. Zmienia się tylko artefakt sterownika i URL różnią się, dlatego należy użyć poniższej tabeli, gdy testowana aplikacja jest uruchamiana na innej bazie danych.

Baza danych Klasa kierowcy Przykładowe połączenie URL Domyślny port
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.OracleKierowca jdbc:oracle:thin:@localhost:1521:orcl 1521
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://localhost:1433;databaseName=emp 1433

Numery portów są przyczyną większości awarii przy pierwszym połączeniu. Błąd odrzucenia połączenia prawie zawsze oznacza, że ​​port w URL nie pasuje do portu, na którym serwer faktycznie nasłuchuje. Sprawdź konfigurację serwera przed przyjęciem wartości domyślnej.

Każdy sterownik jest dostarczany jako pojedynczy plik JAR, który dodajesz do ścieżki kompilacji dokładnie tak, jak pokazano w kroku 7. Każdy silnik z listy powyżej rejestruje się automatycznie, więc wiersz Class.forName nie jest wymagany. Oznacza to, że pojedyncza metoda pomocnicza może obsługiwać każde środowisko, na które skierowany jest Twój pakiet.

FAQ

Nie. Od JDBC 4.0 (Java 6) DriverManager wykrywa sterowniki za pomocą mechanizmu ServiceLoader, więc dodanie pliku JAR Connector/J do ścieżki klas jest wystarczające. Zachowaj wywołanie tylko wtedy, gdy starszy kontener nie zarejestruje automatycznie sterownika.

Brak pliku JAR łącznika/J w ścieżce klasy środowiska wykonawczego lub URL jest nieprawidłowo sformatowany. Sprawdź, czy plik JAR znajduje się w sekcji Biblioteki referencyjne i czy URL zaczyna się od jdbc:mysql:// i podaje nazwę dostępnego hosta i portu.

Tak. Asystenci tacy jak Drugi pilot GitHub pomocnicy połączeń szkieletowych, pętle ResultSet i asercje z opisu schematu. RevPrzed zatwierdzeniem sprawdź każde wygenerowane zapytanie pod kątem poprawnych nazw tabel i bezpieczeństwa wstrzykiwania.

Modele AI generują realistyczne wiersze początkowe, sugerują wartości graniczne i sygnalizują asercje dryfujące po migracji schematu. Platformy takie jak Testim zastosuj to do konserwacji, choć w celu zachowania integralności referencyjnej konieczna jest nadal kontrola ze strony człowieka.

Zawsze. Niezamknięte połączenie lub zestaw wyników wyczerpuje pulę połączeń serwera w całym pakiecie. Umieść je w bloku try-with-resources lub zamknij w bloku @AfterMethod, aby czyszczenie działało nawet w przypadku niepowodzenia asercji.

Podsumuj ten post następująco: