Na poprzednim blogu nauczyłem Cię, jak uruchomić pierwszy test Selenium WebDriver. Na tym blogu będę omawiać zaawansowane koncepcje Selenium WebDriver. Wspominałem już kilka razy, że Selenium WebDriver ma ograniczenia w zakresie zarządzania przypadkami testowymi i generowania raportów z testów. Więc jaka jest alternatywa? Narzędzie tak popularne jak Selenium zdecydowanie musi mieć obejście, prawda? Oczywiście, że tak! Możemy użyć kombinacji Selenium i TestNG, aby pokonać to ograniczenie i będzie to tematem dyskusji na tym blogu.
java konwertuj double na int
Jeśli dopiero zaczynasz przygodę z Selenium i chcesz wprowadzić podstawowe pojęcia, możesz rozpocząć swoją podróż tutaj: ? Jednak inni mogą zacząć korzystać z TestNG for Selenium na tym blogu.Powinieneś także wiedzieć, że organizacje aktywnie polują na profesjonalistów z , co czyni ją ważną umiejętnością do opanowania przez testerów oprogramowania.
Twórcy oprogramowania z całego świata jednogłośnie zgodzą się, że pisanie kodu w przypadkach testowych oszczędza znaczną część ich czasu debugowania. Czemu? Dzieje się tak, ponieważ przypadki testowe pomagają w tworzeniu solidnego i wolnego od błędów kodu. Jak to się dzieje? Dzieląc cały kod na mniejsze przypadki testowe, a następnie oceniając każdy z tych przypadków testowych pod kątem warunków pozytywnych / negatywnych, możemy stworzyć wolny od błędów kod. Ponieważ Selenium nie obsługuje wykonywania kodu w przypadkach testowych, musimy użyć TestNG do tego samego. W tym miejscu TestNG pasuje do frameworka Selenium.
TestNG oznacza Przetestuj następną generację i jest to platforma do automatyzacji testów typu open source zainspirowana JUnit i NUnit. Cóż, nie tylko zainspirowane, ale uaktualnienie do tych dwóch frameworków. Możesz więc zapytać, jakie jest tutaj uaktualnienie?Aktualizacja z TestNG polega na tym, że zapewnia dodatkowe funkcje, takie jak: adnotacje testowe, grupowanie, priorytetyzacja, parametryzacja i techniki sekwencjonowania w kodzie, co wcześniej nie było możliwe.
Oprócz zarządzania przypadkami testowymi, nawet szczegółowe raporty z testów można uzyskać za pomocą TestNG. Pojawi się podsumowanie pokazujące przypadek testowy, który się nie powiódł, wraz z grupą, do której należał, oraz klasą, do której należy. Gdy błędy można dokładnie zlokalizować w ten sposób, można je natychmiast naprawić, co przyniesie ulgę programistom. Poniższy obraz przedstawia działanie TestNG.
Jak więc TestNG wykonuje tę pracę? Odpowiedź na to pytanie zostanie udzielona wnastępna sekcja tego bloga z samouczkiem Selenium WebDriver, w którym omówię, jak zarządzać różnymi przypadkami testowymi przy użyciu TestNG.
Selenium WebDriver z TestNG
Przypadki testowe można definiować i zarządzać nimi na jeden z następujących sposobów:
- Testuj adnotacje
- Priorytetyzacja
- Wyłączanie przypadków testowych
- Zależność od metody
- Grupowanie
- Asercje
- Generowanie raportów
Pozwól, że zacznę wyjaśniaćkażdą z tych funkcji.
Testuj adnotacje
Przede wszystkim zadajmy sobie pytanie: Dlaczego musimy używać adnotacji? Kiedy możemy ich używać? Adnotacje w Selenium służą do kontrolowania następnej metody do wykonania. Adnotacje testowe są definiowane przed każdą metodą w kodzie testu. W przypadku, gdy jakakolwiek metoda nie jest poprzedzona adnotacjami, wówczas ta metoda zostanie zignorowana i nie zostanie wykonana jako część kodu testowego. Aby je zdefiniować, metody należy po prostu opatrzyć adnotacją „ @Test „. Spójrz na przykład na poniższy fragment kodu.
pakiet testng import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.annotations.AfterClass import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeClass import org.testng .BeforeMethod import org.testng.annotations.Test public class TestAnnotations {@Test public void myTestMethod () {System.out.println ('Inside method: - myTestMethod') WebDriver driver = new FirefoxDriver () driver.get ('http: //www.seleniumframework.com/Practiceform/ ') String title = driver.getTitle () System.out.println (title) driver.quit ()} @BeforeMethod public void beforeMethod () {System.out.println (' This fragment kodu jest wykonywany przed metodą: - myTestMethod ') System.setProperty (' webdriver.gecko.driver ',' C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe ')} @AfterMethod public void afterMethod () {System.out.println (' This piece kodu jest wykonywany po metodzie: - myTestMethod ')} @BeforeClass public void beforeClass () {Syste m.out.println ('Ten fragment kodu jest wykonywany przed wykonaniem klasy')} @AfterClass public void afterClass () {System.out.println ('Ten fragment kodu jest wykonywany po wykonaniu klasy')} }
W powyższym kodzie można zauważyć, że nie zdefiniowałem metody „głównej”. Jednak mam zdefiniowane 5 innych metod. Są to „myTestMethod”, „beforeMethod”, „afterMethod”, „beforeClass” i „afterClass”. Zwróć także uwagę na kolejność definicji metod w kodzie, ponieważ nie będą one wykonywane w tej samej kolejności.
Metoda „myTestMethod” jest opatrzona adnotacją @Test i jest to główna metoda lub fragment kodu, który ma zostać wykonany. Inne metody z adnotacjami zostaną wykonane przed i po wykonaniu tej metody. Ponieważ „beforeMethod” jest oznaczony @BeforeMethod , zostanie wykonany przed wykonaniem „myTestMethod”. Podobnie „afterMethod” jest opatrzony adnotacją @AfterMethod i dlatego zostanie wykonany po „myTestMethod”.
Jednak „beforeClass” jest oznaczony adnotacją @Przed zajęciami , co oznacza, że zostanie wykonany jeszcze przed wykonaniem samej klasy. Nazwa naszej klasy to TestAnnotations , a zatem zanim klasa zacznie być wykonywana, zostanie wykonany fragment kodu wewnątrz „beforeClass”. Podobnie „afterClass” jest opatrzony adnotacją @AfterMethod , a zatem zostanie wykonany po zajęciach TestAnnotations jest wykonywany.
Jeśli nadal masz wątpliwości co do kolejności wykonania, poniższy fragment z pewnością Ci pomoże.
1. BeforeSuite 2. BeforeTest 3. BeforeClass 4. BeforeMethod 5. Test 6. AfterMethod 7. AfterClass 8. AfterTest 9. AfterSuite
Wynik powyższego kodu będzie:
Ten fragment kodu jest wykonywany przed wykonaniem klasy. Ten fragment kodu jest wykonywany przed metodą: - myTestMethod Inside metoda: - myTestMethod 1493192682118 geckodriver INFO Odsłuch 127.0.0.1:13676 1493192682713 mozprofile :: profile INFO Korzystanie ze ścieżki profilu C: UsersVardhanAppDataLocalTempile ust_m .wGkcwvwXkl2y 1493192682729 geckodriver :: marionette INFO Uruchamianie przeglądarki C: Pliki programów (x86) Mozilla Firefoxirefox.exe 1493192682729 geckodriver :: marionette INFO Łączenie z Marionette na localhost: 59792 [GPU 6152] OSTRZEŻENIE: błąd potoku: 109s: plik c: / build /moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, linia 346 1493192688316 Marionette INFO Odsłuch na porcie 59792 26 kwietnia 2017 13:14:49 org. openqa.selenium.remote.ProtocolHandshake createSession INFO: Wykryty dialekt: W3C błąd JavaScript: http://t.dtscout.com/i/?l=http%3A%2F%2Fwww.seleniumframework.com%2FPracticeform%2F&j=, linia 1: TypeError: document.getElementsByTagNa me (...) [0] jest niezdefiniowane Selenium Framework | Practiceform 1493192695134 Marionette INFO Nowe połączenia nie będą już akceptowane 26 kwietnia 2017 13:14:57 org.openqa.selenium.os.UnixProcess niszcz POWAŻNE: Nie można zabić procesu za pomocą PID 6724 Ten fragment kodu jest wykonywany według metody: - myTestMethod Ten fragment kodu jest wykonywany po wykonaniu klasy PASSED: myTestMethod ===================================== ============ Domyślnie uruchomione testy testowe: 1, niepowodzenia: 0, pominięcia: 0 ======================== ======================= =========================== ==================== Domyślny pakiet Liczba uruchomionych testów: 1, niepowodzenia: 0, pominięcia: 0 =============== ================================
Jak widać na powyższym wyjściu, liczba wykonanych testów wynosi 1, a zakończonych niepowodzeniem - 0. Oznacza to, że kod się powiódł. Nawet kolejność wykonywania metod będzie w kolejnościjawspomniany wcześniej.
Kiedy wykonasz ten kod na swoim komputerze, Selenium WebDriver utworzy instancję przeglądarki Firefox, przejdzie do formularza ćwiczeń Selenium Framework, zamknie instancję przeglądarki i wyświetli te same dane wyjściowe, jak pokazano powyżej w Twoim Eclipse IDE.
W moim kodzie wykorzystałem tylko 5 różnych adnotacji. Ale jest o wiele więcej adnotacji, których można użyć do kontrolowania następnej metody do wykonania. Cała lista adnotacji jest wyjaśniona wstółponiżej:
@BeforeSuite - metoda z adnotacją @BeforeSuite uruchomi się przed wykonaniem wszystkich testów w pakiecie.
@AfterSuite - metoda z adnotacją @AfterSuite uruchomi się po wykonaniu wszystkich testów w pakiecie.
@BeforeTest - metoda z adnotacją @BeforeTest będzie działać przed uruchomieniem jakiejkolwiek metody testowej należącej do klasy.
@AfterTest - metoda z adnotacją @AfterTest będzie działać po uruchomieniu wszystkich metod testowych należących do klasy.
@BeforeGroup - metoda z adnotacją @BeforeGroup będzie działać przed uruchomieniem każdej grupy.
@AfterGroup - metoda z adnotacją @AfterGroup będzie działać po uruchomieniu każdej grupy.
@Przed zajęciami - metoda z adnotacją @Przed zajęciami uruchomi się raz przed wywołaniem pierwszej metody testowej w bieżącej klasie.
@Po zajęciach - metoda z adnotacją @Po zajęciach uruchomi się raz po uruchomieniu wszystkich metod testowych w bieżącej klasie.
@BeforeMethod - metoda z adnotacją @BeforeMethod będzie działać przed uruchomieniem jakiejkolwiek metody testowej wewnątrz klasy.
@AfterMethod - metoda z adnotacją @AfterMethod będzie działać po uruchomieniu każdej metody testowej wewnątrz klasy.
@Test - metoda z adnotacją @Test to główna metoda testowa w całym programie. Wokół tej metody zostaną wykonane inne metody z adnotacjami.
Zrzut ekranu raportu TestNG toobecny poniżej: -
Priorytetyzacja
Rozmawialiśmy o tym, jak różne metody można zdefiniować tak, aby były wykonywane wokół @Test metoda. Ale co, jeśli masz więcej niż jeden @Test i chcesz zdefiniować kolejność wykonywania między nimi?
W takim razie możemyP.zmień ich priorytety, przypisując liczbę do przypadków testowych z adnotacjami. Mniejsza liczba, wyższy priorytet. Priorytet można przypisać jako parametry podczas definiowania przypadków testowych. Jeśli jednak nie zostanie przypisany żaden priorytet, metody testowe z adnotacjami zostaną wykonane zgodnie z kolejnością alfabetyczną testów. Spójrz na parametry adnotacji testowych w poniższym fragmenciekod.
jak wdrożyć listę połączoną w c
@Test (Priority = 2) public static void FirstTest () {system.out.println ('To jest przypadek testowy numer dwa z powodu priorytetu # 2')} @Test (Priority = 1) public static void SecondTest () { system.out.println ('To jest przypadek testowy numer jeden z powodu priorytetu # 1')} @Test public static void FinalTest () {system.out.println ('To jest ostateczny przypadek testowy, ponieważ nie ma priorytetu' )}
Wyłączanie przypadków testowych
Pokażę ci coś bardziej interesującego. A co, jeśli masz kod obejmujący milion wierszy, składający się z setek przypadków testowych i chcesz wyłączyć tylko jedną metodę testową? Zamiast tego nie musisz usuwać żadnej części kodu, możemy po prostu wyłączyć tę metodę testową.
Czynność wyłączania przypadku testowego jest również wykonywana za pomocą parametrów. Możemy ustawić włączone przypisać „fałsz”. Domyślnie wszystkie przypadki testowe będą włączone, dlatego nie musimy ich definiować za każdym razem, gdy piszemy test. Spójrz na parametry trzeciej i czwartej metody w poniższym fragmenciekod.
@Test (Priority = 2, enabled = True) public static void FirstTest () {system.out.println ('To jest przypadek testowy numer dwa z powodu priorytetu # 2')} @Test (Priority = 1, enabled = True ) public static void SecondTest () {system.out.println ('To jest przypadek testowy numer jeden z powodu priorytetu # 1')} @Test (enabled = false) public static void SkippedTest () {system.out.println ( 'To jest pominięty przypadek testowy, ponieważ został on wyłączony')} @Test (enabled = True) public static void FinalTest () {system.out.println ('To jest ostateczny przypadek testowy, który jest włączony i nie ma priorytetu ')}
Zależność od metody
Teraz, jeśli masz sytuację, w której chcesz, aby kawałek kodu był wykonywany tylko wtedy, gdy spełnia warunek lub tylko wtedy, gdy dana metoda zostanie pomyślnie wykonana, możemy to zrobić za pomocą dependOnMethod (). Jest to w zasadzie warunek zależności metody, w którym metoda zostanie wykonana w zależności od innej metody. Jeśli dodatkowo ustawimy zawsze Biegnij atrybutu na wartość true, metoda zostanie wykonana niezależnie od warunku niepowodzenia / przejścia metody zależnej. Spójrz na kod w poniższym fragmencie kodu.
@Test public static void FirstTest () {system.out.println ('To jest pierwszy przypadek testowy do wykonania')} @Test (dependOnMethods = {'FirstTest'}) public static void SecondTest () {system.out. println ('To jest drugi przypadek testowy do wykonania To jest metoda zależna')} @Test (dependsOnMethods = {'SecondTest'}) public static void FinalTest () {system.out.println ('To jest test końcowy Przypadek I tak zostanie wykonany. ')}
To prowadzi nas do innego ważnego aspektu testuadnotacje, które są Grupowanie .
Grupowanie
Do tej pory musisz wiedzieć, że w kodzie będzie kilka metod w ramach naszego przypadku testowego. Powiedzmy, że istnieje 100 przypadków testowych, ale w następnym teście chcemy wykonać tylko 20 przypadków testowych. Myślisz, że możemy to zrobić? Oczywiście, możemy.
Możemy użyć grupy atrybut w tym celu. Możemy przypisać nazwę grupy do wielu przypadków testowych, a później wybrać wykonanie grupy zamiast całego kodu. Spójrz na poniższy fragment kodu, aby zrozumiećjak tworzyć grupy.
@Test (groups = {'MyGroup'}) public static void FirstTest () {system.out.println ('This is a part of the Group: MyGroup')} @Test (groups = {'MyGroup'}) public static void SecondTest () {system.out.println ('To także część grupy: MyGroup')} @Test public static void ThirdTest () {system.out.println ('Ale to nie jest część Grupa: MyGroup ')}
Asercje TestNG
To prowadzi nas teraz do następnego tematu w TestNG, czyli asercji. Jak sama nazwa wskazuje, asercje mogą być używane w metodach testowych do określenia warunku pozytywnego / negatywnego testu. W oparciu o prawdziwy / fałszywy warunek instrukcji testy zakończą się pomyślnie lub nie.
W poniższym kodzie zawarłem 3 metody testowe, w których pierwsza i trzecia metoda mają warunek pozytywny, a druga metoda będzie miała warunek niepowodzenia. Zobacz sam kod.
pakiet testng import org.testng.annotations.Test import org.testng.annotations.BeforeMethod import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.Assertfter import org.testng.annotations.Assert public class Assertions {@BeforeMethod public void beforeMethod () {System.setProperty ('webdriver.gecko.driver', 'C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe')} public boolean isEqual (int a, int b) {if (a == b ) {return true} else {return false}} @Test public void testEquality1 () {Assert.assertEquals (true, isEqual (10, 10)) System.out.println ('To jest warunek zaliczenia')} @Test public void testEquality2 () {Assert.assertEquals (true, isEqual (10, 11)) System.out.println ('To jest warunek niepowodzenia')} @Test public void getTitle () {WebDriver driver = nowy sterownik FirefoxDriver (). get ('https://www.gmail.com') String title = driver.getTitle () Assert.assertEquals (title, 'Gmail') System.out.println ('To znowu jest warunek zaliczenia')} }
Kiedy spojrzysz na raport, który zostanie wygenerowany po tym wykonaniu, zauważysz, że z trzech testów jeden nie powiódł się, a dwa przeszły. Inną ważną kwestią, na którą należy zwrócić uwagę, jest to, że jeśli asercja się nie powiedzie, inne polecenia / wiersze kodu w tym teście zostaną pominięte. Tylko wtedy, gdy asercja się powiedzie, w tym teście zostanie wykonana następna linia kodu. Sprawdź dane wyjściowe poniżej, gdzie system.out.println wykonał tylko dla pierwszej i trzeciej metody.
1493277977348 geckodriver INFO Nasłuchiwanie na 127.0.0.1:47035 1493277977993 mozprofile :: profile INFO Korzystanie ze ścieżki profilu C: UsersVardhanAppDataLocalTemp ust_mozprofile.Z7X9uFdKODvi 1493277977994 geckodriver :: marionette INFOire browser C: UsersVardhanAppDataLocalTemp ust_mozprofile.Z7X9uFdKODvi 1493277977994 geckodriver :: marionette INFOire browser C: Łączenie się z Marionette na localhost: 50758 [GPU 6920] OSTRZEŻENIE: błąd potoku: 109: plik c: / builds / moz2_slave / m-rel-w32-000000000000000000 / build / src / ipc / chromium / src / chrome / common / ipc_channel_win. cc, linia 346 1493277981742 Marionette INFO Nasłuchiwanie na porcie 50758 27 kwietnia 2017 12:56:22 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: W3C To jest ponownie warunek pozytywny To jest warunek pozytywny PASSED: getTitle PASSED: testEquality1 FAILED: testEquality2 java.lang.AssertionError: spodziewany [false], ale znaleziono [true] w org.testng.Assert.fail (Assert.java:93) w org.testng.Assert.failNotEquals (Assert.java: 512) w org.testng.Assert.assertE qualsImpl (Assert.java:134) w org.testng.Assert.assertEquals (Assert.java:115) w org.testng.Assert.assertEquals (Assert.java:304) w org.testng.Assert.assertEquals (Assert.java : 314) pod adresem testng.Assertions.testEquality2 (Assertions.java:38) pod adresem sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) pod adresem sun.reflect.NativeMethodAccessorImpl.invoke (Unknown Source) pod adresem sun.reflect.Delegating UnknownMethodAvcc Source) na stronie java.lang.reflect.Method.invoke (Unknown Source) na org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:108) na org.testng.internal.Invoker.invokeMethod (Invoker.java:661) w org.testng.internal.Invoker.invokeTestMethod (Invoker.java:869) w org.testng.internal.Invoker.invokeTestMethods (Invoker.java:1193) pod adresem org.testng.internal.TestMethodWorker.invokeTestMethods (TestMethodWorker. ) pod adresem org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) pod adresem org.testng.TestRunner.privateRun (TestRunner.java:744) pod adresem org.testng.TestRu nner.run (TestRunner.java:602) pod adresem org.testng.SuiteRunner.runTest (SuiteRunner.java:380) pod adresem org.testng.SuiteRunner.runSequably (SuiteRunner.java:375) pod adresem org.testng.SuiteRunner.privateRun (SuiteRunner .java: 340) w org.testng.SuiteRunner.run (SuiteRunner.java:289) w org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) pod adresem org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.java:86) w org.testng.TestNG.runSuitesSequably (TestNG.java:1301) pod adresem org.testng.TestNG.runSuitesLocally (TestNG.java:1226) pod adresem org.testng.TestNG.runSuites (TestNG.java:1144) pod adresem org.testng. TestNG.run (TestNG.java:1115) pod adresem org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:132) pod adresem org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:230) w org.testng.remote .RemoteTestNG.main (RemoteTestNG.java:76) ========================================= ======== Domyślnie uruchomione testy testowe: 3, niepowodzenia: 1, pominięcia: 0 ============================== =================== ================================= ================ Pakiet domyślny Liczba uruchomionych testów: 3, Błędy: 1, Pominięcia: 0 ===================================== ============
To koniec koncepcji związanych z zarządzaniem przypadkami testowymi. Pozostaje nam jeszcze jeden temat, a mianowicie generowanie raportów. Generowanie raportów jest ostatnim tematem w tym samouczku Selenium WebDriver, ponieważ raporty można generować tylko po wszystkich plikachtesty są wykonywane.
na koniec i sfinalizuj w java
Generowanie raportów
Najważniejszą rzeczą, na którą musisz zwrócić uwagę, jest to, że raport zostanie wygenerowany tylko za pośrednictwem pliku .xml. Oznacza to, że czy to metoda, czy też klasa, czy też grupa, którą chcesz przetestować, wszystkie muszą być określone w pliku .xml.
Więc najpierw możesz utworzyć nowy folder w swoim projekcie i utworzyć nowy plik w tym folderze, nadać plikowi nazwę i zapisać go z rozszerzeniem .xml. Możesz utworzyć nowy folder i plik, klikając prawym przyciskiem myszy eksplorator pakietów. Po utworzeniu pliku przejdź do zakładki źródła od dołu okna i wprowadź konfiguracje określone w poniższym fragmencie.
Pierwsza linia to definicja typu dokumentu XML. Jest to standardowe i obowiązkowe dla wszystkich raportów z testów. Ale inne linie są dość oczywiste. Użyłem otwartych tagów dla pakietu, testu, klas i klasy. Tag Classes może zawierać jedną lub więcej klas. Można go więc wykorzystać, jeśli chcemy wygenerować raport, w którym testujemy wiele klas. Jest to przydatne zwłaszcza dla programistów, którzy chcą przetestować długi fragment kodu.
Wracając do naszego raportu, możesz nazwać każdy pakiet, test lub klasę po otwarciu tych tagów i pamiętać, aby zamknąć każdy otwarty tag. Nadałem apartamentowi nazwę jako TestNGs , nazwa testu jako Test Adnotacje i nazwa klasy jako testng.TestAnnotations. Zwróć uwagę, że nazwa klasy ma format ' nazwa_pakietu.nazwaklasy ” .
Gdy uruchomisz ten plik jako pakiet TestNG, rozpocznie się wykonywanie i otrzymasz szczegółowe raporty z testów. Otrzymasz wynik testu na karcie konsoli, a wynik zestawu testów na następnej karcie. Raport, który wygenerowałem w celu wykonania mojego kodu, towponiższy zrzut ekranu. Zauważysz, że tym razem jest nazwa pakietu, nazwa testu, nazwa klasy oraz czas potrzebny na wykonanie każdego z nich.
W przypadku, gdy chcesz wyświetlić raport HTML (raport indeksu lub raport dostępny), możesz przejść do pliku wyjście testowe folder w katalogu projektu w obszarze roboczym. Klikając na nie, możesz przeglądać raporty nawet w późniejszym czasie. Poniżej znajdują się ich zrzuty ekranu.
Raport indeksu : -
Raport dostępny : -
To prowadzi nas do końca tego samouczka blogu Selenium WebDriver. Nadszedł czas, aby skonfigurować eclipse na końcu, zainstalować różne pakiety Selenium, zainstalować TestNG i rozpocząć pisanie przypadków testowych.
Możesz obejrzeć poniższy film instruktażowy Selenium WebDriver, aby zobaczyć demonstrację różnych koncepcji wyjaśnionych na tym blogu.
Trening selenu | Framework TestNG dla Selenium | Edureka
Ten film szkoleniowy Edureka Selenium przeprowadzi Cię przez szczegółowe informacje na temat Selenium WebDriver. Ten samouczek wideo dotyczący Selenium jest idealny zarówno dla początkujących, jak i profesjonalistów, którzy chcą odświeżyć podstawy poleceń WebDriver i dowiedzieć się, jak można używać TestNG z Selenium do zarządzania różnymi przypadkami testowymi.
Jeśli chcesz nauczyć się Selenium i zbudować karierę w domenie testowej, sprawdź nasze interaktywne, online na żywo tutaj, który zapewnia wsparcie 24 * 7, które poprowadzi Cię przez cały okres nauki.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.