Explizite Warten in Selen

Explizite Warten in Selen
Selenium bietet Warten, um die Synchronisationsprobleme zu lösen. In diesem Artikel werden wir die explizite Wait -Methode diskutieren. Die explizite Methode hält die Ausführung des nächsten Schritts, bis das Element in einer bestimmten Zeit findet. In diesem Inhalt haben wir einen Überblick über das Selen -Warten und verstehen die Vorteile eines expliziten Wartens. Dieser Artikel implementiert ein grundlegendes Beispiel für explizit.

Was sind die Waits im Selenium -Framework??

Selenium wartet bei der Lösung der Synchronisationsprobleme. Die Synchronisation ist der Prozess der Übereinstimmung mit der Geschwindigkeit „Testautomatisierungstools“ mit der Geschwindigkeit der „zu testenden Website“ abgeschlossen. In diesem Prozess führt der Webdriver eine bestimmte Aufgabe auf der Webseite aus, aber das Webelement wird nicht in "Website -Website test" geladen. In dieser Situation wirft der Webdriver eine Ausnahme von "NoSuchelementExpection" oder "ElementNotvisiblexpection" aus. Es gibt drei Arten von Waiten, die vom Selenium -Framework bereitgestellt werden.

Implizite Wartezeit

Diese Art von Wartezeit gilt für alle Website -Elemente, weshalb sie als globales Warten bezeichnet wird. Die implizite Methode () wird verwendet, um sie aufzurufen.

Explizites Warten

Es ist ein Webelement -spezifischer Warteart. Es wartet auf eine bestimmte Zeit, um das spezifische Element zu laden.

Fließendes Warten

Es gibt die maximale Zeit, um das Webelement zu finden.

Was ist ein explizites Warten in Selen?

Der explizite Warteart unterscheidet sich von der impliziten Wartezeit. Diese Wartenmethode gilt für eine bestimmte Zeit, bis eine bestimmte Bedingung auftritt, bevor sie mit der nächsten Codezeile fortfahren. Es ist hilfreich, wenn einige Elemente schneller beladen und einige Elemente langsamer beladen. Zum Beispiel: Es gibt zwei oder drei Elemente, bei denen das Laden von 20 bis 30 Sekunden auf der Webseite dauert. Hier können Sie nicht gehen und das Warten entsprechend der maximalen Zeit ändern, die von einem der Webelemente genommen wird. Hier spielt das explizite Warten seine Rolle. Explizites Warten gibt das Warten auf dieses bestimmte Element auf der Webseite an. Sie können angeben, dass Sie lange auf ein bestimmtes Element warten. Dort verwenden wir das explizite Warten. Die Methode für Webdriverwait wird verwendet, um das eexplicit -Warten aufzurufen.

Selenium Webbrowser -Schnittstelle

Die Webdriver -Schnittstelle ermöglicht die Implementierung des Automatisierungstests. Der Webdriver wird verwendet, um die Interaktion zwischen Website und Selenium -Automatisierungstools zu steuern und zu erstellen.

Sie können eine Vielzahl von Webbrowsern verwenden, darunter Firefox, Safari und Chrome. Jede Art von Browser verfügt über eine bestimmte Klasse für diese Art von Browser wie Firefoxdriver, Chromedriver, InternetExplorerDriver usw. Alle Browser können über die Webdriver -Methode implementiert werden.

Hier ist die Syntax für die Verwendung der Webdriver -Schnittstelle:

vom Selenium importieren Webdriver
Treiber = Webdriver.Chrom()
Treiber.Get ('https: // www.Ebay.com '))

Im bereitgestellten Code -Teil erstellen wir das "Treiber" -Objekt des Webdrivers. Hier verwenden wir den Chrombrowser mit der Methode.Chrome () Klasse. Danach startet und öffnet der Browser die gegebene URL.

Beispiel 1:

In diesem ersten Programm wird ein sehr grundlegendes Beispiel für explizites Warten implementiert, das für Anfänger und erfahrene Entwickler sehr nützlich ist.

Es gibt Szenarien, in denen wir zum ersten Mal das Webel "Daily Deals" finden und zur Seite zur Seite Daily Deals navigieren. Wenn die Bedingung wahr ist, drucken Sie die „Bedingung wahr“ aus. Andernfalls drucken Sie die Ausnahme „Bedingung falsch“ aus.

Zunächst importieren wir alle notwendigen Bibliotheken von Selenium und Webbrowser. Importieren Sie die folgenden Bibliotheken, um das explizite Warten zu verwenden:

import org.OpenQA.Selen.Unterstützung.ui.Erwartete Formen;
import org.OpenQA.Selen.Unterstützung.ui.Webdriverwait;

Wir geben den vollständigen Code im Folgenden an:

Paket UI;
Java importieren.Util.gleichzeitig.Zeitunität;
import org.OpenQA.Selen.Von;
import org.OpenQA.Selen.Webelement;
import org.OpenQA.Selen.Chrom.Chromedriver;
import org.OpenQA.Selen.Unterstützung.ui.Erwartete Formen;
import org.OpenQA.Selen.Unterstützung.ui.Webdriverwait;
öffentliche Klasse explocic_wait
public static void main (String [] args)
System.setProperty ("Webdriver.Chrom.Treiber "," C: \\ Browserdivers \\ Chromedriver.exe ");
Chromedriver -Treiber = neuer Chromedriver ();
Treiber.verwalten().Fenster().maximieren();
Treiber.Get ("https: // www.Ebay.com/");
Webdriverwait wait = neuer Webdriverwait (Treiber, Dauer.von Sekunden (10));
versuchen
Webelementelement = Warten Sie.Bis (erwartete Formen.SichtbarkeitOfelementlocated (von.linkText ("Daily Deals")));
Element.klicken();
System.aus.println ("Zustand true");

fangen (Ausnahme E)

System.aus.println (e);
System.aus.println ("Zustand falsch");

Treiber.aufhören();

Lassen Sie uns nun den vorherigen Code Schritt für Schritt verstehen und erklären, welche Aktionen jede Zeile ausführt.

Im ersten Code -Stück erhalten wir die Browserbibliotheken vom Computer und starten dann die Chrome -Browser -Treiber.

In diesem Beispiel verwenden wir den Chrombrowser. Die folgende Syntax wird verwendet, um es zu implementieren:

System.setProperty ("Webdriver.Chrom.Treiber "," C: \\ Browserdivers \\ Chromedriver.exe ");
Chromedriver -Treiber = neuer Chromedriver ();

Danach maximieren wir das Browserfenster und öffnen die angegebene Website mithilfe der folgenden Syntax:

Treiber.verwalten().Fenster().maximieren();
Treiber.Get ("https: // www.Ebay.com/");

In diesem Beispiel verwenden wir die eBay -Website unter https: // www.Ebay.com/.

Wenn wir überprüfen möchten, ob die Hyperlinie „Daily Deal“ vorhanden ist oder nicht, sollten wir wissen, wo der „Daily Deal“ auf der Website vorhanden ist. Um den LinkText-Locator der Hyperlinie „Daily Deals“ zu finden. Der Screenshot ist im Folgenden beigefügt, um zu sehen, wo wir das Tag „Daily Deals“ finden können.

Im vorherigen Screenshot sehen wir, dass das Tag für "Daily Deals" auf der Webseite vorhanden ist. Wenn es kein vorhandenes Tag gibt, gibt es keine vorhandenen "Daily Deals" Hyper-Line. Wir müssen diesen folgenden Hinweis verwenden:

Treiber.FindElement (von.Locatortype („LocatorValue“));

Wir benutzen den Fahrer.FindElements () -Methoden zum Überprüfen, ob ein Element auf einer Webseite vorhanden ist oder nicht. Das "By" -Objekt ist ein Parameter für den Befehl findelement, der ein Objekt des Webelement -Typs liefert. Die verschiedenen Locator -Techniken wie Name, ID, Klassenname, XPath usw. Linktext kann mit dem Objekt "by" verwendet werden. Wie wir wissen. Wenn das Element gefunden wird, wird eine Liste der Webelemente ungleich Null zurückgegeben. Andernfalls wird eine Liste der Größe 0 zurückgegeben. Infolgedessen kann die Länge der Liste verwendet werden, um festzustellen, ob ein Eintrag vorhanden ist oder nicht.

In diesem Beispiel verwenden wir den LinkText -Locator, wie in der folgenden Syntax gezeigt:

Treiber.FindElement (von.linkText ("Daily Deals")).klicken();

Finden Sie im vorherigen Code-Chunk zuerst den Hyper-Line-Text „Daily Deals“. Verwenden Sie anschließend die Funktion click (), um zu einer anderen Seite zu navigieren.

Danach wird das explizite Warten in der folgenden Syntax implementiert:

Webdriverwait wait = neuer Webdriverwait (Treiber, Dauer.von Sekunden (10));

Beachten Sie, dass die Funktion 10 Sekunden lang wie in der Webdriverwait -Methode auf 10 Sekunden wartet, bis der angegebene Locator gefunden wird.

Die Webdriverwait -Methode wird verwendet, um explizit implementiert zu werden. Erstellen Sie das Referenzobjekt „Warte“ der Webdriverwait -Klasse. Ziehen Sie dann den Speicher mit dem neuen Webdriverwait zu und übergeben Sie zwei Parameter (1) Web -Fahrer -Referenzobjekt und erwähnte (2) Zeitdauer (Treiber, Dauer.von Sekunden (10)).

Verwenden Sie nun das Referenzobjekt der Webdriverwait -Klasse, die „wartet“, um die bis () -Methode aufzurufen und die erwartete SichtbarkeitOfelementlocated (von.id) Bedingung. Wenn die erwartete Bedingung wahr ist, geben Sie das Webelement zurück und warten Sie 10 Sekunden lang, bis diese Bedingung wahr wird. Diese erwartete Bedingung ist die Webelement -Spezifikation. Hier müssen wir auf die Sichtbarkeit „Element“ warten. Wenn das Element innerhalb von 5 Sekunden sichtbar ist, wartet Wait Exits. Wenn nicht, maximiert es die Wartezeit für 10 Sekunden.

Hier ist die angegebene Syntax für die erwartete Bedingung:

Warten.Bis (erwartete Formen.SichtbarkeitOfelementlocated (von.ID ("Element")));

Es gibt viele erwartete Bedingungen, die von Selen in wie alertispresent (), ElementSelectionStatetobe (), ElementTobeClickable () usw. bereitgestellt werden. Hier in diesem Tutorial verwenden wir den Zustand „VisiblityofelementLocated ()“.

Gehen wir zum nächsten Codeblock, wo wir die „Bedingung true“ haben:

versuchen
Webelementelement = Warten Sie.Bis (erwartete Formen.SichtbarkeitOfelementlocated (von.linkText ("Daily Deals")));
Element.klicken();
System.aus.println ("Zustand true");

fangen (Ausnahme E)

System.aus.println (e);
System.aus.println ("Zustand falsch");

Um zu überprüfen, ob das Element existiert oder nicht, verwenden wir einen Versuch, Block zu fangen. Wir müssen nur versuchen, das Element zu finden und damit zu interagieren.

Webelementelement = Warten Sie.Bis (erwartete Formen.SichtbarkeitOfelementlocated (von.linkText ("Daily Deals")));
Element.klicken();
System.aus.println ("Zustand true");

Warten Sie auf das Element mit dem LinkText "Daily Deals". Wenn wir das Webel finden, klicken Sie auf dieses Element, um zu einer anderen Seite zu navigieren und die „Bedingung true“ in der Konsole zu drucken.

Hier in der folgenden Ausgabe -Screenshot können wir sehen, dass das Element -Fund erfolgreich ist. Navigieren Sie die Seite:

Gehen wir zum nächsten Code -Stück, wo wir die „Bedingung falsch“ haben:

versuchen
Webelementelement = Warten Sie.Bis (erwartete Formen.SichtbarkeitOfelementlocated (von.linkText ("falsches Element")));
Element.klicken();
System.aus.println ("Zustand true");

fangen (Ausnahme E)

System.aus.println (e);
System.aus.println ("Zustand falsch");

Wenn der Hyper-Line-Text „Falsches Element“ auf der Webseite nicht vorhanden ist, werfen Sie die Ausnahme und drucken Sie die Ausgabe „Bedingung falsch“ in der Konsole.

In der folgenden Ausgabe -Screenshot können wir sehen, dass das Element erfolglos gefunden wird:

Schließlich schließen Sie den Browser nach der Ausführung des gesamten Codes mithilfe der Methode Quit ().

Treiber.aufhören();

Abschluss

Sie haben nun etwas über Selen aus expliziten Wartevorteilen erfahren. Sie werden lernen, wie Sie es in einem echten Szenario implementieren können. Dieser Artikel implementiert das Beispiel, in dem Sie die Ausführung des weiteren Code durchführen, bis Sie das Element zu einer bestimmten Wartezeit finden. Dieser Artikel enthält den Versuch, die Bedingungen zu fangen. Wenn das Element beendet ist, drucken Sie die „Bedingung wahr“ aus. Ansonsten drucken Sie die „Bedingung falsch“.