Jak radzić sobie z alertami i wyskakującymi okienkami w Selenium?
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 Testy. 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
Niniejsze 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.














