Selenium Easy

jak wiemy, każda aplikacja musi utrzymywać bazę danych, taką jak My SQL, Oracle lub inne bazy danych, aby przechowywać wszystkie swoje dane. I gdzie jako Selenium Webdriver służy do testowania aplikacji internetowych i wykonujemy wiele operacji, takich jak przesyłanie informacji, a czasami pobieranie informacji i ich Walidacja.

w skryptach selenium, gdy istnieje potrzeba uzyskania danych z bazy danych, być może będziemy musieli użyć API, które pomagają w interakcji z bazą danych, taką jak JDBC.

Java Database Connectivity (JDBC) jest API Java, który służy do łączenia się i interakcji z bazą danych.

dlaczego używamy JDBC zamiast ODBC?

ODBC jest rozwijany i napisany w języku C, który jest niezależny od platformy. gdzie jako JDBC API jest specyfikacja zapewnia zestaw interfejsów, które są napisane i opracowane w języku programowania Java.

jak połączyć się z bazą danych za pomocą JDBC?

Poniżej przedstawiono kroki, aby połączyć się z bazą danych, zanim przejdziesz dalej, musisz mieć Złącze MySQL. Możesz pobrać stąd Pobierz MySQL Connector Jar i dodać go ścieżkę kompilacji, jak dodajemy selenium webdriver jar.

1. Załadowanie i rejestracja Sterownika
2. Nawiązuję Połączenie.
3. Wytworzenie Obiektu Instrukcji
4. Wykonaj polecenie
5. Zamykam połączenie.

1. Załaduj i zarejestruj sterownik:

do rejestracji Sterownika ładujemy klasę Sterownika za pomocą metody forName ().

forName () jest statyczną metodą fabryczną, która jest obecna w predefiniowanej klasie o nazwie „Class”. Metoda ta wczytuje klasę, która jest wymieniona jako parametr.

Class.forName("com.mysql.jdbc.Driver");// class.forName load the Driver class

wewnętrznie ta klasa sterowników zarejestruje sterownik przy użyciu statycznej metody o nazwie registerDriver ().

2. Nawiązanie połączenia:

do nawiązania połączenia z bazą danych wywołujemy statyczną metodę getConnection(…) obecny w klasie DriverManager. Metoda ta zawiera trzy argumenty typu string. tzn. url, Nazwa użytkownika i hasło

DriverManager.getConnection("jdbc:mysql://localhost:3306/Employee","root","root"); 

URL zawiera „JDBC(main protocol):mysql(sub protocol for mySql)://localhost:3306(sub name for mysql (host:prot))/Employee(database)” i tą metodą return type jest Connection Object tj.,

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Employee","root","root"); 

3. Wytworzenie obiektu instrukcji:

do wytworzenia obiektu instrukcji należy wywołać metodę createStatement (), która jest obecna w interfejsie połączenia.

con.createStatement();

i ta metoda zwraca obiekt instrukcji i nie jest to metoda argumentu.

Statement st= con.createStatement();

4.Wykonywanie zapytań:

do wykonywania zapytań w interfejsie instrukcji dostępne są różne metody pobierania rekordów i aktualizacji rekordów.

:
do wykonywania zapytań select(do pobierania rekordów) wywołujemy metodę o nazwie executeQuery(String qry) przyjmując string jako parametr.

st.executeQuery("Select * from Employee");

ta metoda zwraca obiekt ResultSet.

Resultset rs= st.executeQuery("Select * from Employee");// once executeQuery() executes the query and stores the records in to ResultSet object. 

teraz musimy pobrać rekordy z obiektu ResultSet. Aby uzyskać dostęp do obiektu resultset używa metody o nazwie next (), która prezentuje się w interfejsie ResultSet.

domyślnie Resultset reference’ rs ’ wskazuje przed pierwszym wierszem. przenosi na rs do następnego wiersza i zwraca true. Gdy zwraca true pobieramy dane w pierwszym wierszu. next() zwraca false, gdy rs wskazuje na po ostatnim wierszu. ta funkcja next() powtarza wykonanie przy użyciu pętli while, aż zwróci false.

aby pobrać dane z wierszy używamy getXxx(..) biorąc łańcuch lub liczbę całkowitą jako parametry. W tym przypadku integer oznacza pozycję kolumny, a string oznacza nazwę kolumny rekordu. xxx wskazuje prymitywne typy danych lub obiekt typu string.

while(rs.next()) {int EmpId= rs.getInt("EmpId");String EmpName= rs.getString("EmpName");String EmpAddress=rs.getString(3);Double EmpSal= rs.getDouble(4);String EmpDept=rs.getString("EmpDept");System.out.println(EmpId+"\t"+EmpName+"\t"+EmpAddress+"\t"+EmpSal+"\t"+EmpDept);}

aktualizacja rekordów:
do aktualizacji rekordów w tabeli używamy metody o nazwie executeUpdate (String str)

st.executeUpdate("update Employee set EmpName='Robert' where EmpId=2");

która zwraca wartość całkowitą, ile rekordów zostało zaktualizowanych.

int result = st.executeUpdate("update Employee set EmpName='Robert' where EmpId=2");System.out.println("number of records updated is" +result);

5. Zamykanie połączenia:

po wykonaniu wszystkich poleceń musimy zamknąć wszystkie połączenia za pomocą metody o nazwie close() obecnej w interfejsie połączenia

con.close();

baza danych, której używamy na przykład, ma następujące rekordy w tabeli’Employee’
 testowanie bazy danych z selenium

teraz czas zajrzeć do poniższego prostego przykładowego programu, a później przejdziemy do przykładowego frameworka : – W następnym tutorialu postaramy się wziąć przykład, który pobierze parametry (takie jak poświadczenia bazy danych , szczegóły środowiska itp.) z plików właściwości i przystąpić do testu na podstawie podanych parametrów.

/** * Created by VISISHTA on 12/17/2015. */import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;import java.sql.*;public class SeleniumDataBaseTesting { private Connection connection; private static Statement statement; private static ResultSet rs; @BeforeClass public void setUp() { String databaseURL = "jdbc:mysql://localhost:3306/easy"; String user = "root"; String password = "root"; connection = null; try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("Connecting to Database..."); connection = DriverManager.getConnection(databaseURL, user, password); if (connection != null) { System.out.println("Connected to the Database..."); } } catch (SQLException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } } @Test public void getEmployeesFromDataBase() { try { String query = "select * from employee"; statement = connection.createStatement(); rs = statement.executeQuery(query); while(rs.next()){ int EmpId= rs.getInt("EmpId"); String EmpName= rs.getString("EmpName"); String EmpAddress=rs.getString(3); String EmpDept=rs.getString("EmpDept"); Double EmpSal= rs.getDouble(5); System.out.println(EmpId+"\t"+EmpName+"\t"+EmpAddress+"\t"+EmpSal+"\t"+EmpDept); } } catch (SQLException ex) { ex.printStackTrace(); } } @AfterClass public void tearDown() { if (connection != null) { try { System.out.println("Closing Database Connection..."); connection.close(); } catch (SQLException ex) { ex.printStackTrace(); } } }}

w powyższym przykładzie mamy, setUp() utworzy połączenie z bazą danych, a w metodzie @Test wykonamy i iterację tabeli, aby wydrukować wszystkie wartości w bazie danych. A last tearDown() ma bliskie połączenie, które zamknie połączenie z bazą danych, jeśli zostanie otwarte.

wyjście powyższego programu powinno wyglądać jak poniżej:

wynik testowania bazy danych za pomocą selenium

do tej pory widzieliśmy przykład jak uzyskać dostęp do bazy danych,teraz zobaczmy, jak faktycznie wykonujemy testowanie bazy danych za pomocą Selenium.

istnieją głównie dwie rzeczy, które możemy chcieć przetestować, aby zweryfikować bazę danych za pomocą Selenium.

po pierwsze, po wykonaniu jakiejkolwiek akcji w aplikacji webowej (Front-end), możemy sprawdzić bazę danych, czy wszystkie przesłane przez nas dane są poprawnie zapisane. Teraz na przykład, podczas tworzenia konta, będziemy wprowadzać niektóre dane E-Mail Id, nazwa użytkownika itp. Aby upewnić się, że konto zostało utworzone, możemy sprawdzić rekord utworzony w bazie danych ze wszystkimi szczegółami podanymi przez użytkownika.

inny przypadek może być taki, że po wykonaniu dowolnej akcji możemy sprawdzić, czy Dane wyświetlane w interfejsie użytkownika są poprawne, porównując bazę danych.

mam nadzieję, że ten artykuł ci pomoże . Daj nam znać, jeśli napotkasz jakiekolwiek trudności podczas pracy z powyższym programem, a opinie są również mile widziane.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.