efficient selenium scripting
Im vorherigen Tutorial haben wir die technischen Auswirkungen erörtert während der Implementierung der Protokollierung in einem Framework . Wir diskutierten Dienstprogramm log4j endlich. Wir haben die grundlegenden Komponenten, die log4j ausmachen, aus Sicht der Benutzerfreundlichkeit erörtert. Mit den Anhängen und Layouts kann ein Benutzer das gewünschte Protokollierungsformat / -muster und die Datenquelle / den Speicherort auswählen.
Im aktuellen 27. Tutorial dazu umfassende kostenlose Online-Schulungsserie zu Selen Wir würden unseren Fokus auf ein paar Kleinigkeiten verlagern noch wichtige Themen Das würde uns helfen, einige wiederkehrende Probleme zu beheben. Wir können sie in täglichen Skripten verwenden oder nicht, aber sie wären auf lange Sicht hilfreich.
Wir würden Besprechen Sie einige fortgeschrittene Konzepte, bei denen wir uns mit Maus- und Tastaturereignissen befassen und durch Implementieren von Listen auf mehrere Links zugreifen . Warum also nicht einfach anfangen und diese Themen mit Hilfe geeigneter Szenarien und Codefragmente kurz diskutieren?
c ++ char * bis int
Was du lernen wirst:
- JavaScript-Ausführende
- Zugriff auf mehrere Elemente in einer Liste
- Umgang mit Tastatur- und Mausereignissen
- Fazit
- Literatur-Empfehlungen
JavaScript-Ausführende
Während der Automatisierung eines Testszenarios gibt es bestimmte Aktionen, die Bestandteil von Testskripten werden.
Diese Aktionen können sein:
- Klicken auf eine Schaltfläche, einen Hyperlink usw.
- Eingabe in ein Textfeld
- Vertikal oder horizontal scrollen, bis das gewünschte Objekt angezeigt wird
- Und vieles mehr
Aus den früheren Tutorials geht hervor, dass die beste Möglichkeit zur Automatisierung solcher Aktionen die Verwendung von Selenium-Befehlen ist.
Aber was ist, wenn die Selenbefehle nicht funktionieren?
Ja, es ist absolut möglich, dass die grundlegenden und elementaren Selenbefehle in bestimmten Situationen nicht funktionieren.
Um eine solche Situation beheben zu können, schultern wir JavaScript-Executoren ins Bild.
Was sind JavaScript Executors?
Die JavascriptExecutor-Schnittstelle ist Teil von org.openqa.selenium und implementiert die Klasse java.lang.Object. JavascriptExecutor bietet die Funktionen zum Ausführen von JavaScript direkt im Webbrowser. Um das JavaScript ausführen zu können, werden in seiner Implementierung bestimmte Mechanismen in Form von Methoden zusammen mit einem bestimmten Parametersatz bereitgestellt.
Methoden
executeScript (String script, args)
Wie der Methodenname andeutet, wird das JavaScript innerhalb des aktuellen Fensters, der Warnung, des Frames usw. ausgeführt (das Fenster, auf das sich die WebDriver-Instanz derzeit konzentriert).
executeAsyncScript (String-Skript, Argumente)
Wie der Methodenname andeutet, wird das JavaScript innerhalb des aktuellen Fensters, der Warnung, des Frames usw. ausgeführt (das Fenster, auf das sich die WebDriver-Instanz derzeit konzentriert).
Fragen und Antworten zum Interview mit Selen Webdriver für 3 Jahre Erfahrung
Die Parameter und die import-Anweisung sind beiden Executor-Methoden gemeinsam.
Parameter
Skript - das auszuführende Skript
Argument - die Parameter, die das Skript für seine Ausführung benötigt (falls vorhanden)
Anweisung importieren
Um JavascriptExecutors in unseren Testskripten verwenden zu können, müssen wir das Paket mit der folgenden Syntax importieren:
import org.openqa.selenium.JavascriptExecutor;
Beispielcode
# 1) Klicken auf ein Webelement
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) Eingabe in ein Textfeld
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Scrollen Sie nach unten, bis sich das Webelement in der Ansicht befindet
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
Möglicherweise finden Sie verschiedene andere Möglichkeiten, den Code für den Zugriff auf JavascriptExecutors zu schreiben.
Zugriff auf mehrere Elemente in einer Liste
Manchmal stoßen wir auf Elemente desselben Typs wie mehrere Hyperlinks, Bilder usw., die in einer geordneten oder ungeordneten Liste angeordnet sind. Daher ist es absolut sinnvoll, solche Elemente mit einem einzigen Code zu behandeln, und dies kann mithilfe der WebElement-Liste erfolgen. Sehen Sie sich den Screenshot unten an, um die Elemente zu verstehen, über die ich spreche.
Im obigen Bild sehen wir, dass die verschiedenen Dienstanbieter zu einer ungeordneten Liste gehören. Somit kann die Überprüfung der Klickbarkeit und Sichtbarkeit dieser Elemente durch einen einzelnen Code unter Verwendung einer Liste von Elementen erfolgen.
Anweisung importieren
Um eine WebElement-Liste in unseren Testskripten verwenden zu können, müssen wir das Paket mit der folgenden Syntax importieren:
import java.util.List;
Beispielcode
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iEs gibt verschiedene Anforderungen, unter denen die Listen verwendet werden können, um die Elemente mit geeigneten Implementierungsänderungen zu überprüfen.
Umgang mit Tastatur- und Mausereignissen
Behandeln von Tastaturereignissen
Wie bereits erwähnt, gibt es n verschiedene Möglichkeiten, mit derselben Problemstellung in verschiedenen Kontexten umzugehen.
Daher besteht manchmal die Notwendigkeit, ein Problem zu lösen, indem die herkömmliche Handelsstrategie durch eine fortgeschrittenere Strategie geändert wird. Ich habe Fälle erlebt, in denen ich nicht mit Warnungen und Popups usw. durch Selen-Befehle umgehen konnte. Daher musste ich mich für verschiedene Java-Dienstprogramme entscheiden, um mit Tastaturanschlägen und Mausereignissen damit umzugehen.
Die Roboterklasse ist eine solche Option zum Ausführen von Tastatur- und Mausereignissen.
Lassen Sie uns das Konzept anhand eines Szenarios und seiner Umsetzung verstehen.
Szenario:
Lassen Sie uns eine Situation erfassen, in der ein unnötiges Popup auf dem Bildschirm angezeigt wird, das über die Warnschnittstelle nicht akzeptiert oder verworfen werden kann. Daher bleibt uns nur die Möglichkeit, das Fenster mit den Tastenkombinationen „Alt + Leertaste + C“ zu schließen. . Lassen Sie uns sehen, wie wir das Popup mit Robot Class schließen.
Bevor wir mit der Implementierung beginnen, sollten wir das erforderliche Paket importieren, um die Robot-Klasse in unserem Testskript verwenden zu können.
Import Statement
import java.awt.Robot;
Beispielcode
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
Die Roboterklasse kann auch zur Behandlung von Mausereignissen verwendet werden. Lassen Sie uns hier jedoch die Möglichkeiten des Selens zur Behandlung von Mausereignissen betrachten.
Umgang mit Mausereignissen
WebDriver bietet eine Vielzahl von Interaktionsdienstprogrammen, mit denen der Benutzer Maus- und Tastaturereignisse automatisieren kann. Action Interface ist ein solches Dienstprogramm, das die Einzelbenutzerinteraktionen simuliert.
Wir würden also sehen, wie Action Interface mit der Maus über ein Dropdown-Menü schwebt, das dann im nächsten Szenario eine Liste von Optionen öffnet.
Szenario:
- Bewegen Sie den Mauszeiger über das Dropdown-Menü
- Klicken Sie auf eines der Elemente in den Listenoptionen
Import Statement
import org.openqa.selenium.interactions.Actions;
Beispielcode
Java, wie man ein Array von Objekten erstellt
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Fazit
In diesem Lernprogramm wurden einige erweiterte Themen im Zusammenhang mit effizienter Skripterstellung und der Fehlerbehebung in Szenarien behandelt, in denen der Benutzer mit Maus- und Tastaturereignissen umgehen muss. Wir haben auch besprochen, wie mehr als ein Webelement in einer Liste gespeichert werden kann. Ich hoffe, Sie können diese Hindernisse beheben, wenn Sie auf sie stoßen.
Nächstes Tutorial # 28 : Für das bevorstehende Tutorial in der Reihe würden wir das diskutieren Konzept des Datenbanktests mit Selenium WebDriver . Wir würden den Mechanismus der Datenbankverbindung beobachten, Selenabfragen treffen und die Ergebnisse über Selenium WebDriver Code abrufen.
Literatur-Empfehlungen
- Einführung in Selenium WebDriver - Selenium Tutorial # 8
- Debuggen von Selenium-Skripten mit Protokollen (Log4j Tutorial) - Selenium Tutorial # 26
- 30+ beste Selen-Tutorials: Lernen Sie Selen anhand realer Beispiele
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- So suchen Sie Elemente in Chrome- und IE-Browsern zum Erstellen von Selenium-Skripten - Selenium-Lernprogramm Nr. 7
- Implementierung unseres ersten WebDriver-Skripts - Selenium WebDriver Tutorial # 10
- WebDriver Gesamte Einrichtung und Installation mit Eclipse - Selenium Tutorial # 9
- Generika und Testsuiten erstellen - Selenium Tutorial # 22