Selenalarm & Handhabung von Popup-Fenstern: Wie geht man damit um?

Inhaltsverzeichnis:

Anonim

In diesem Tutorial erfahren Sie, wie Sie mit Popups in Selenium und verschiedenen Arten von Warnungen umgehen, die beim Testen von Webanwendungen zu finden sind. Wir werden auch sehen, wie Alert in Selenium WebDriver behandelt wird, und erfahren, wie wir den Alert abhängig von den Alert-Typen akzeptieren und ablehnen.

In diesem Tutorial lernen Sie:

  • Was ist Alarm?
  • So behandeln Sie Warnungen in Selenium WebDriver
  • Umgang mit dem Selenium Popup-Fenster mit Webdriver

Was ist Alarm in Selen?

Ein Alarm in Selen ist ein kleines Meldungsfeld, das auf dem Bildschirm angezeigt wird, um dem Benutzer Informationen oder Benachrichtigungen zu geben. Es benachrichtigt den Benutzer mit bestimmten Informationen oder Fehlern, bittet um Erlaubnis, bestimmte Aufgaben ausführen zu dürfen, und es gibt auch Warnmeldungen aus.

Hier sind einige Warnungen bei Selentypen:

1) Einfache Warnung

Die einfache Alarmklasse in Selenium zeigt einige Informationen oder Warnungen auf dem Bildschirm an.

2) Sofortige Benachrichtigung.

Diese Eingabeaufforderungsbenachrichtigung fordert den Benutzer zur Eingabe auf, und der Selenium-Webdriver kann den Text mithilfe von sendkeys ("Eingabe" eingeben

…. ").

3) Bestätigungsalarm.

Diese Bestätigungswarnung fordert Sie zur Erlaubnis auf, eine Operation auszuführen.

So behandeln Sie Warnungen in Selenium WebDriver

Die Warnschnittstelle bietet die folgenden Methoden, die in Selenium Webdriver weit verbreitet sind.

1) void accept () // Um ​​auf die Schaltfläche 'Abbrechen' der Warnung zu klicken.

driver.switchTo (). alert (). Entlassung ();

2) void accept () // Um ​​auf die Schaltfläche 'OK' der Warnung zu klicken.

driver.switchTo (). alert (). accept ();

3) String getText () // Zum Erfassen der Warnmeldung.

driver.switchTo (). alert (). getText (); 

4) void sendKeys (String stringToSend) // Zum Senden einiger Daten an die Warnbox .

driver.switchTo (). alert (). sendKeys ("Text");

Sie können sehen, dass eine Reihe von Warnmethoden angezeigt werden, wie im folgenden von Eclipse vorgeschlagenen Bildschirm gezeigt.

Mit der .switchTo () -Methode von Selenium können wir vom Hauptfenster aus problemlos zur Warnung wechseln .

Jetzt automatisieren wir das unten angegebene Szenario.

In diesem Szenario verwenden wir die Guru99-Demoseite, um die Handhabung von Selenium-Warnungen zu veranschaulichen.

Schritt 1) Starten Sie den Webbrowser und öffnen Sie die Site "http://demo.guru99.com/test/delete_customer.php".

Schritt 2) Geben Sie eine beliebige Kunden-ID ein.

Schritt 3) Klicken Sie nach Eingabe der Kunden-ID auf die Schaltfläche "Senden".

Schritt 4) Ablehnen / Akzeptieren der Warnung.

Behandeln von Warnungen in Selenium Webdriver unter Verwendung des obigen Szenarios

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;öffentliche Klasse AlertDemo {public static void main (String [] args) löst NoAlertPresentException, InterruptedException {ausSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();// Behandlung von Warnmeldungendriver.get ("http://demo.guru99.com/test/delete_customer.php");driver.findElement (By.name ("cusid")). sendKeys ("53920");driver.findElement (By.name ("submit")). submit ();// Wechseln zu AlertAlert alert = driver.switchTo (). Alert ();// Warnmeldung erfassen.String alertMessage = driver.switchTo (). Alert (). GetText ();// Warnmeldung anzeigenSystem.out.println (alertMessage);Thread.sleep (5000);// Alarm annehmenalert.accept ();}}}}

Ausgabe :

Wenn Sie den obigen Code ausführen, wird die Site gestartet. Versuchen Sie, die Kunden-ID zu löschen, indem Sie die auf dem Bildschirm angezeigte Bestätigungswarnung verarbeiten und damit die Kunden-ID aus der Anwendung löschen.

Umgang mit dem Selenium-Popup-Fenster mit Webdriver

Wenn in einer Automatisierung in einer Webanwendung mehrere Fenster vorhanden sind, muss die Aktivität möglicherweise die Steuerung zwischen mehreren Fenstern von einem zum anderen wechseln, um den Vorgang abzuschließen. Nach Abschluss des Vorgangs muss es zum Hauptfenster zurückkehren, dh zum übergeordneten Fenster in Selenium. Wir werden dies weiter im Artikel mit einem Beispiel sehen.

Im Selenium-Webtreiber gibt es Methoden, mit denen wir mehrere Fenster verarbeiten können.

Driver.getWindowHandles ();

Um alle vom Webtreiber geöffneten Fenster zu verarbeiten, können wir "Driver.getWindowHandles ()" verwenden und dann in einer Webanwendung das Fenster von einem Fenster zum anderen wechseln. Der Rückgabetyp ist Iterator .

Driver.getWindowHandle ();

Wenn die Site geöffnet wird, müssen wir das Hauptfenster von driver.getWindowHandle () behandeln . Dadurch wird das aktuelle Fenster behandelt, das es innerhalb dieser Treiberinstanz eindeutig identifiziert. Der Rückgabetyp ist String.

Für die Fensterhandhabung in Selen werden die folgenden Schritte ausgeführt:

Jetzt werden wir das folgende Szenario automatisieren, um zu sehen, wie mehrere Fenster mit Selenium Webdriver behandelt werden.

In diesem Szenario verwenden wir die Demo-Site "Guru99", um die Fensterbehandlung zu veranschaulichen.

Schritt 1) Starten Sie die Site.

Starten Sie den Browser und öffnen Sie die Site " http://demo.guru99.com/popup.php ".

Schritt 2) Klicken Sie auf den Link "Hier klicken".

Wenn der Benutzer auf den Link "Hier klicken" klickt, wird ein neues untergeordnetes Fenster geöffnet.

Schritt 3) Neues untergeordnetes Fenster wird geöffnet.

Ein neues Fenster wird geöffnet. Bitten Sie den Benutzer, die E-Mail-ID einzugeben und die Seite zu senden.

Schritt 4) Geben Sie Ihre E-Mail-ID ein und senden Sie sie ab.

Schritt 5) Zeigen Sie die Zugangsdaten beim Senden der Seite an.

Wenn Sie den Code ausführen, sehen Sie, dass das untergeordnete Fenster in einer neuen Registerkarte geöffnet ist.

  1. Schließen Sie das untergeordnete Fenster, in dem Anmeldeinformationen angezeigt werden.
  1. Wechseln Sie zum übergeordneten Fenster.

Behandeln mehrerer Fenster in Selenium Webdriver unter Verwendung des obigen Szenarios.

import java.util.Iterator;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;öffentliche Klasse WindowHandle_Demo {public static void main (String [] args) löst InterruptedException aus {WebDriver-Treiber = neuer FirefoxDriver ();// Starten der Site.driver.get ("http://demo.guru99.com/popup.php");driver.manage (). window (). maxim ();driver.findElement (By.xpath ("// * [enthält (@ href, 'popup.php')]")). click ();String MainWindow = driver.getWindowHandle ();// Um ​​alle neu geöffneten Fenster zu behandeln.Setze  s1 = driver.getWindowHandles ();Iterator  i1 = s1.iterator ();while (i1.hasNext ()){String ChildWindow = i1.next ();if (! MainWindow.equalsIgnoreCase (ChildWindow)){// Zum untergeordneten Fenster wechselndriver.switchTo (). window (ChildWindow);driver.findElement (By.name ("emailid")).sendKeys (" Diese E-Mail-Adresse wird vor Spambots geschützt. Zum Anzeigen muss JavaScript aktiviert sein.");driver.findElement (By.name ("btnLogin")). click ();// Das untergeordnete Fenster schließen.driver.close ();}}}}// Zum übergeordneten Fenster wechseln, dh zum Hauptfenster.driver.switchTo (). window (MainWindow);}}}}

Ausgabe:

Wenn Sie den obigen Code ausführen, wird die Site gestartet und beim Klicken auf den Link "Hier klicken" wird ein untergeordnetes Fenster in einer neuen Registerkarte geöffnet. Sie können das untergeordnete Fenster schließen und nach Abschluss des Vorgangs zum übergeordneten Fenster wechseln. Daher wird mehr als ein Fenster in der Anwendung behandelt.

Handhabung mehrerer Fenster in Selen

Fazit:

  • Wir haben die Alarmtypen definiert und sie mit einem Screenshot angezeigt.
  • Demonstriert den Umgang mit dem Alert mit Selenium WebDriver unter Verwendung eines bestimmten Szenarios.
  • Behandelte mehrere Fenster mit Selenium WebDriver unter Verwendung eines bestimmten Szenarios.