Selenium Obsługa okien alertów i wyskakujących okienek: jak sobie z nimi radzić?
W czym jest Alert Selenium?
An Alarm w Selenium to małe okno wiadomości, które pojawia się na ekranie, aby przekazać użytkownikowi pewne informacje lub powiadomienie. Powiadamia użytkownika o pewnych konkretnych informacjach lub błędach, prosi o pozwolenie na wykonanie pewnych zadań, a także wyświetla komunikaty ostrzegawcze.
W tym samouczku nauczymy się obsługiwać wyskakujące okienka Selenium oraz różne rodzaje alertów znajdujących się w aplikacji internetowej Testowanie. Zobaczymy również, jak obsługiwać Alert w Selenium WebDriver i dowiedz się, jak akceptować i odrzucać alerty w zależności od ich typów.
Rodzaje alertów w Selenium
1) Simple Alert
Prosta klasa alertów w Selenium wyświetla na ekranie pewne informacje lub ostrzeżenia.
2) Prompt Alert
To zdjęcie Prompt Alert prosi użytkownika o pewne informacje i Selenium webdriver może wprowadzić tekst za pomocą sendkeys(” input…. „).
3) Confirmation Alert
Ten alert potwierdzający prosi o pozwolenie na wykonanie pewnej operacji.
Jak obsługiwać alert w Selenium Sterownik sieciowy
Interfejs alertów udostępnia kilka poniższych metod, które są szeroko stosowane Selenium Sterownik internetowy.
1) nieważne zwolnienie() // Aby kliknąć przycisk „Anuluj” alertu.
driver.switchTo().alert().dismiss();
2) unieważnij akceptację()// Aby kliknąć przycisk „OK” alertu.
driver.switchTo().alert().accept();
3) Ciąg getText() // Aby przechwycić komunikat ostrzegawczy.
driver.switchTo().alert().getText();
4) void sendKeys(Ciąg stringToSend) // Aby wysłać dane do pola alertu.
driver.switchTo().alert().sendKeys("Text");
Na poniższym ekranie możesz zobaczyć szereg metod alertów wyświetlanych przez Eclipse.
W prosty sposób możemy przełączyć się na alert z okna głównego za pomocą Selenium'S .Przełącz na() Metoda.
Teraz automatyzujemy podany poniżej scenariusz.
W tym scenariuszu do ilustracji użyjemy witryny demonstracyjnej Guru99 Selenium Obsługa alertów.
Krok 1) Uruchom przeglądarkę internetową i otwórz witrynę https://demo.guru99.com/test/delete_customer.php
Krok 2) Wprowadź dowolny identyfikator klienta.
Krok 3) Po wprowadzeniu identyfikatora klienta kliknij przycisk „Wyślij”.
Krok 4) Odrzuć/zaakceptuj alert.
Obsługa alertu w Selenium Sterownik internetowy
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.NoAlertPresentException; import org.openqa.selenium.Alert; public class AlertDemo { public static void main(String[] args) throws NoAlertPresentException,InterruptedException { System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // Alert Message handling driver.get("https://demo.guru99.com/test/delete_customer.php"); driver.findElement(By.name("cusid")).sendKeys("53920"); driver.findElement(By.name("submit")).submit(); // Switching to Alert Alert alert = driver.switchTo().alert(); // Capturing alert message. String alertMessage= driver.switchTo().alert().getText(); // Displaying alert message System.out.println(alertMessage); Thread.sleep(5000); // Accepting alert alert.accept(); } }
Wyjście:
Po wykonaniu powyższego kodu uruchamia się witryna. Spróbuj usunąć Customer ID, obsługując alert potwierdzający wyświetlany na ekranie, a tym samym usuwając customer id z aplikacji.
Jak obsługiwać wyskakujące okienko za pomocą Selenium Sterownik internetowy
W automatyzacji, gdy mamy wiele okien w dowolnej aplikacji internetowej, aktywność może potrzebować przełączyć kontrolę między kilkoma oknami z jednego do drugiego, aby zakończyć operację. Po zakończeniu operacji musi ona powrócić do głównego okna, tj. okna nadrzędnego w Selenium. Zobaczymy to w dalszej części artykułu na przykładzie.
In Selenium Sterownik internetowy Istnieją metody, dzięki którym możemy obsługiwać wiele okien.
Driver.getWindowHandles();
Aby obsłużyć wszystkie otwarte okna przez sterownik sieciowy, możemy użyć „Driver.getWindowHandles()”, a następnie możemy przełączać okno z jednego okna do drugiego w aplikacji sieciowej. Jego typem zwracanym jest Iterator .
Driver.getWindowHandle();
Kiedy strona się otworzy, musimy obsłużyć główne okno wg sterownik.getWindowHandle(). To obsłuży bieżące okno, które jednoznacznie identyfikuje je w tej instancji sterownika. Typ zwracany to String.
Do obsługi okien w Selenium, wykonamy poniższe kroki:
Teraz zautomatyzujemy podany poniżej scenariusz, aby zobaczyć, jak obsługiwać wiele okien za pomocą Selenium Sterownik internetowy.
W tym scenariuszu użyjemy witryny demonstracyjnej „Guru99”, aby zilustrować obsługę okien.
Krok 1) Uruchom witrynę.
Uruchom przeglądarkę i otwórz witrynę https://demo.guru99.com/popup.php
Krok 2) Kliknij łącze „Kliknij tutaj”.
Kiedy użytkownik kliknie link „Kliknij tutaj”, otworzy się nowe okno podrzędne.
Krok 3) Otwiera się nowe okno podrzędne.
Otworzy się nowe okno, w którym użytkownik zostanie poproszony o podanie adresu e-mail i przesłanie strony.
Krok 4) Wprowadź swój adres e-mail i prześlij.
Krok 5) Wyświetl dane uwierzytelniające dostępu po przesłaniu strony.
Po wykonaniu kodu zobaczysz, że okno podrzędne jest otwarte w nowej karcie.
- Zamknij okno podrzędne, w którym wyświetlane są dane uwierzytelniające.
- Przejdź do okna nadrzędnego.
Jak obsługiwać wiele Windows in Selenium
import java.util.Iterator; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class WindowHandle_Demo { public static void main(String[] args) throws InterruptedException { WebDriver driver=new FirefoxDriver(); //Launching the site. driver.get("https://demo.guru99.com/popup.php"); driver.manage().window().maximize(); driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click(); String MainWindow=driver.getWindowHandle(); // To handle all new opened window. Set<String> s1=driver.getWindowHandles(); Iterator<String> i1=s1.iterator(); while(i1.hasNext()) { String ChildWindow=i1.next(); if(!MainWindow.equalsIgnoreCase(ChildWindow)) { // Switching to Child window driver.switchTo().window(ChildWindow); driver.findElement(By.name("emailid")) .sendKeys("gaurav.3n@gmail.com"); driver.findElement(By.name("btnLogin")).click(); // Closing the Child Window. driver.close(); } } // Switching to Parent window i.e Main Window. driver.switchTo().window(MainWindow); } }
Wyjście:
Po wykonaniu powyższego kodu uruchamia się witryna, a po kliknięciu łącza „Kliknij tutaj” otwiera się okno podrzędne w nowej karcie. Możesz zamknąć okno podrzędne i przełączyć się na okno nadrzędne po zakończeniu operacji. W ten sposób obsługujesz więcej niż jedno okno w aplikacji.
Podsumowanie
- Zdefiniowaliśmy rodzaje alertów i pokazaliśmy je za pomocą zrzutu ekranu.
- Zademonstrowano obsługę alertu za pomocą Selenium WebDriver przy użyciu określonego scenariusza.
- Obsługiwano wiele okien za pomocą Selenium WebDriver przy użyciu określonego scenariusza.