Тестування бази даних за допомогою Selenium та JDBC: Як підключитися?

⚡ Розумний підсумок

Тестування бази даних за допомогою Selenium спирається на JDBC, оскільки сам WebDriver перевіряє лише рівень браузера. Ці кроки показують, як відкрити MySQL з'єднання, виконати SQL, прочитати ResultSet та перевірити збережені дані.

  • 🔌 Міст JDBC: Selenium WebDriver керує лише браузером, тому JDBC надає рівень бази даних для кожного твердження даних.
  • 🧩 Клас водія: Modern 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 усувають ризик ін'єкцій та дозволяють серверу повторно використовувати кешований план виконання.

Використання тестування бази даних Selenium

Підключення до бази даних в Selenium

Selenium Webdriver обмежено Тестування ваші програми за допомогою браузера. Використовувати Selenium Webdriver for Database Verification, вам потрібно використовувати JDBC (“Java Підключення до бази даних”).

JDBC (Java Підключення до бази даних) є a SQL рівень API, який дозволяє виконувати оператори SQL. Він відповідає за зв'язок між Java Мова програмування та широкий спектр баз даних. JDBC API надає наступні класи та інтерфейси

  • Менеджер водіїв
  • Водій
  • Connection
  • Заява
  • ResultSet
  • SQLException

Як підключити базу даних в Selenium

Щоб перевірити свою базу даних за допомогою Selenium, вам потрібно виконати наступні 3 кроки

Підключити базу даних Selenium

Крок 1) Встановіть підключення до бази даних

Для встановлення з’єднання з базою даних синтаксис є

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

Тут,

  • Userid – це ім’я користувача, налаштоване в базі даних
  • Пароль налаштованого користувача
  • URL має формат jdbc:<тип_бази_об'єкта>://ipaddress:номер_порту/назва_бази_об'єкта»
  • - Драйвер для бази даних, до якої ви намагаєтеся підключитися. Для підключення до бази даних Oracle це значення буде «oracle». Для підключення до бази даних з іменем «emp» у MYSQL 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();

Після створення об’єкта оператора використовуйте метод executeQuery для виконання запитів SQL

stmt.executeQuery(select *  from employee;);
⚠️ Увага! executeQuery приймає рядок (String), тому візьміть SQL-запит у лапки: executeQuery(“select * from employee”). Використовуйте PreparedStatement для введення користувачем.

Крок 3) Обробіть результати

Результати виконаного запиту зберігаються в об’єкті ResultSet.

Java надає безліч додаткових методів для обробки результатів. Деякі з методів перераховані нижче

Обробка результатів

Приклад тестування бази даних з Selenium

Крок 1) Встановлювати MySQL сервер та MySQL Верстак

Перегляньте повний посібник із Mysql і Mysql Workbench тут

Під час встановлення MySQL Сервер, зверніть увагу на базу даних

  • ім'я користувача
  • Пароль
  • Номер порту

Це знадобиться на подальших етапах.

MySQL Workbench полегшує адміністрування бази даних без необхідності кодування SQL. Однак ви також можете використовувати MySQL Термінал для взаємодії з базою даних.

Крок 2) In MySQL WorkBench, підключіться до свого MySQL сервер

Тестування бази даних з Selenium

На наступному екрані

  1. Виберіть локальний екземпляр MySQL
  2. Введіть номер порту
  3. Введіть ім'я користувача
  4. Введіть пароль
  5. натисніть OK

Тестування бази даних з Selenium

Крок 3) Щоб створити базу даних,

  1. Натисніть кнопку створити схему
  2. Введіть назву схеми/бази даних
  3. Клацніть Застосувати

Тестування бази даних з Selenium

Крок 4) У меню навігатора

  1. Натисніть «Таблиці» під базою даних emp
  2. Введіть назву таблиці як співробітника
  3. Введіть поля як ім'я та вік
  4. Клацніть Застосувати

Тестування бази даних з Selenium

Ви побачите таке спливаюче вікно. Натисніть Застосувати

Тестування бази даних з Selenium

Крок 5) Ми створимо наступні дані

ІМ'Я вік
Toп 25
Nick 36
Bill 47

Щоб створити дані в таблиці

  1. У навігаторі виберіть таблицю співробітників
  2. На правій панелі клацніть «Редактор форм».
  3. Введіть ім'я та вік
  4. Клацніть Застосувати

Тестування бази даних з Selenium

Повторюйте процес, доки не буде створено всі дані

Тестування бази даних з Selenium

Крок 6) Завантажити MySQL роз'єм JDBC тут

Тестування бази даних з Selenium

Крок 7) Додайте завантажений Jar до свого проекту

  1. Клацніть правою кнопкою миші на вашому Java Файл. Потім натисніть «Шлях збірки» à «Налаштувати шлях збірки»
  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 залишається ідентичним для всіх рушіїв: імпорт, виклик Statement та цикл ResultSet не змінюються. Тільки артефакт драйвера та URL відрізняються, тому використовуйте таблицю нижче, коли тестований застосунок працює на іншій базі даних.

Database Клас водія Зразок підключення URL Порт за умовчанням
MySQL com.mysql.cj.jdbc.Драйвер jdbc:mysql://localhost:3306/emp 3306
PostgreSQL org.postgresql.Драйвер 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;ім'яБазиДаних=emp 1433

Номери портів спричиняють більшість перших збоїв. Помилка відмови у з’єднанні майже завжди означає, що порт у URL не відповідає порту, який фактично прослуховує сервер. Перевірте конфігурацію сервера, перш ніж використовувати значення за замовчуванням.

Кожен драйвер постачається як окремий JAR-файл, який ви додаєте до шляху збірки точно так, як показано на кроці 7. Кожен перелічений вище рушій реєструється автоматично, тому рядок Class.forName не потрібен. Це означає, що один допоміжний метод може обслуговувати кожне середовище, на яке орієнтований ваш пакет.

Поширені запитання

Ні. З JDBC 4.0 (Java 6), DriverManager виявляє драйвери через механізм ServiceLoader, тому достатньо додати Connector/J JAR до шляху до класів. Виклик слід продовжувати лише тоді, коли застарілий контейнер не може автоматично зареєструвати драйвер.

JAR-файл Connector/J відсутній у шляху класів середовища виконання, або URL неправильно сформовано. Переконайтеся, що JAR-файл відображається в розділі "Бібліотеки, на які посилаються", і перевірте, що URL починається з jdbc:mysql:// та вказує на доступний хост і порт.

Так. Помічники, такі як Копілот GitHub помічники з’єднань scaffold, цикли ResultSet та твердження з опису схеми. Revпереглядати кожен згенерований запит на наявність правильних назв таблиць та безпеки ін'єкцій перед фіксацією.

Моделі штучного інтелекту генерують реалістичні початкові рядки, пропонують граничні значення та позначають твердження, що зміщуються після міграції схеми. Такі платформи, як Testim застосуйте це до обслуговування, хоча перевірка людиною залишається необхідною для забезпечення цілісності посилань.

Завжди. Незакрите з'єднання або набір результатів (ResultSet) вичерпує пул підключень сервера через довгий набір. Оберніть їх у блок try-with-resources або закрийте їх у блоці @AfterMethod, щоб очищення виконувалося навіть у разі невдалого виконання твердження.

Підсумуйте цей пост за допомогою: