Selenium Kernerweiterungen (User-Extensions.js)
โก Intelligente Zusammenfassung
Selenium Kernerweiterungen, auch Benutzererweiterungen genannt, fรผgen benutzerdefinierte Aktionen, Zugriffsmethoden und Suchstrategien hinzu. Selenium IDE durch Anhรคngen JavaSkriptfunktionen fรผr die Selenium und PageBot-Prototypobjekte beim Start der IDE.
Selenium Kernerweiterungen
Um Erweiterungen zu verstehen, wollen wir zunรคchst die drei Sรคulen verstehen. Selenium IDEJeder Befehl, den Sie in der IDE aufzeichnen oder eingeben, gehรถrt zu einer der drei unten aufgefรผhrten Kategorien, und jeder Screenshot zeigt, wie diese Kategorie in der Befehlsliste der IDE dargestellt wird.
- Aktion: Welche Operation fรผhren Sie auf dem Benutzeroberflรคchenbildschirm aus?
- Zugriffsmethoden / Behauptung: Welche รberprรผfung fรผhren Sie an den Daten durch, die Sie รผber die Benutzeroberflรคche erhalten?
- Standortstrategie: So finden Sie das Element in der Benutzeroberflรคche.
Selenium Die IDE wird mit einer ausgereiften Bibliothek ausgeliefert, die bereits zahlreiche Aktionen, Zugriffsmethoden und Zusicherungen sowie Locator-Strategien enthรคlt.
Manchmal benรถtigt ein Projekt jedoch Funktionen, die in dieser Bibliothek nicht enthalten sind. In diesem Fall kรถnnen Sie die Bibliothek durch Hinzufรผgen einer eigenen benutzerdefinierten Erweiterung erweitern. Diese benutzerdefinierten Erweiterungen werden als Erweiterungen bezeichnet. Benutzererweiterung.
Angenommen, Sie benรถtigen eine Aktion, die Text in Groรbuchstaben umwandelt, bevor er in ein Web-Element eingefรผgt wird. Da eine solche Aktion in der Standardbibliothek nicht vorhanden ist, erstellen Sie eine eigene Benutzererweiterung. In diesem Tutorial erfahren Sie, wie Sie eine solche Benutzererweiterung entwickeln.
โ ๏ธ Bevor Sie beginnen: Der hier beschriebene Arbeitsablauf gehรถrt zu Selenium Core und das Original Firefox-Plugin Selenium IDE. Selenium Die Core-Version wurde eingestellt, und die Unterstรผtzung fรผr Benutzererweiterungen wurde entfernt. Selenium Glรคser in Selenium 3. Die folgenden Schritte und der Code werden beibehalten, da eine groรe Anzahl รคlterer Selenese-Suites noch immer darauf angewiesen ist; der moderne Ersatz wird spรคter in diesem Artikel beschrieben.
Anforderung zur Erstellung eines Selenium Benutzererweiterung
Um eine Benutzererweiterung zu erstellen fรผr Selenium IDE, Sie benรถtigen die grundlegenden Konzepte von JavaSkript und insbesondere die JavaSkript-Prototypobjekt. Das folgende Diagramm zeigt die beiden Prototypobjekte, an die sich eine Benutzererweiterung anhรคngt.
Um Ihre Benutzererweiterung zu erstellen, schreiben Sie JavaSkriptmethoden und fรผgen Sie sie dem hinzu Selenium Objektprototyp und zum PageBot-Objektprototyp.
Wie Selenium Die IDE erkennt eine Benutzererweiterung
Nachdem eine Benutzererweiterung hinzugefรผgt wurde Selenium IDE und die IDE wird gestartet, jede Funktion ist auf diesen registriert JavaSkriptprototypen werden geladen, und Selenium Die IDE erkennt jeden Befehl an seinem Namen. Daher sind die Namensprรคfixe im nรคchsten Abschnitt keine Stilfrage โ sie dienen lediglich der Klassifizierung Ihres Befehls durch die IDE.
So erstellen Sie eine Benutzererweiterung
Schritt 1) โโAktion โ alle Aktionen beginnen mit doWenn die Aktion Text in Groรbuchstaben umwandelt, lautet ihr Name: doTextUpperCaseWenn Sie diese Aktionsmethode hinzufรผgen zu Selenium Die IDE selbst erstellt eine passende Wartemethode, daher doTextUpperCase erzeugt auch die Wartefunktion textUpperCaseAndWaitDie Methode kann zwei Parameter akzeptieren.
Beispiel: Textaktion in Groรbuchstaben
Selenium.prototype.doTextUpperCase = function(locator, text) { // Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text var element = this.page().findElement(locator); // Create the text to type text = text.toUpperCase(); // Replace the element text with the new text this.page().replaceText(element, text); };
Schritt 2) Zugriffsmethoden / Assertion โ alle auf der Selenium Objektprototypen werden mit einem Prรคfix versehen bekommen or isBeispielsweise `getValueFromCompoundTable` oder `isValueFromCompoundTable`. Ein Accessor kann zwei Parameter akzeptieren: einen fรผr das Ziel und einen fรผr das Wertfeld im Testfall. Der folgende Screenshot zeigt, wie diese Prรคfixe nach dem Laden der Erweiterung aussehen.
Fรผr jeden Accessor Selenium Die IDE generiert die entsprechenden Verifizierungsfunktionen mit dem Prรคfix รผberprรผfen und behaupten, plus eine Wartefunktion mit dem Prรคfix warteAuf.
Beispiel: Zugriffsmethoden fรผr Groรbuchstaben
Selenium.prototype.assertTextUpperCase = function(locator, text) { // All locator-strategies are automatically handled by "findElement" var element = this.page().findElement(locator); // Create the text to verify text = text.toUpperCase(); // Get the actual element value var actualValue = element.value; // Make sure the actual value matches the expected Assert.matches(expectedValue, actualValue); }; Selenium.prototype.isTextEqual = function(locator, text) { return this.getText(locator).value===text; }; Selenium.prototype.getTextValue = function(locator, text) { return this.getText(locator).value; };
Schritt 3) Locator-Strategie โ Wenn Sie eine eigene Funktion zum Auffinden eines Elements erstellen mรถchten, erweitern Sie den PageBot-Prototyp um eine Funktion mit dem Prรคfix locateElementByEs benรถtigt zwei Parameter: die Locatorzeichenfolge und das Dokument, in dem das Element gesucht werden soll.
Beispiel: Fรผr den Text-Locator in Groรbuchstaben
// The "inDocument" is a document you are searching. PageBot.prototype.locateElementByUpperCase = function(text, inDocument) { // Create the text to search for var expectedValue = text.toUpperCase(); // Loop through all elements, looking for ones that have // a value === our expected value var allElements = inDocument.getElementsByTagName("*"); // This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element. for (var i = 0; i < allElements.length; i++) { var testElement = allElements[i]; if (testElement.innerHTML && testElement.innerHTML === expectedValue) { return testElement; } } return null; };
Speichern Sie alle drei Funktionen in einer einzigen Datei mit dem Namen user-extensions.jsDie Datei ist im Klartextformat. JavaDa es sich um ein Skript handelt, genรผgt jeder Texteditor.
So verwenden Sie die neu erstellte Core-Erweiterung
Das Laden der Datei ist im Original ein vierstufiger Vorgang. Firefox-Plugin-IDE. Jeder der folgenden Screenshots entspricht dem daneben nummerierten Schritt.
- Zurรผck Nach Selenium IDE und klicken Optionen -> Optionenโฆ
- Im Allgemein Im Abschnitt โSpeicherort des neu erstelltenโ Selenium Kernerweiterung.
- Klicken Sie auf OK und neu starten Selenium IDE.
- Die Erweiterung finden Sie in der Befehlsliste.
Selenium Core Extensions vs Selenium IDE-Erweiterungen
Die beiden Begriffe werden in รคlteren Materialien synonym verwendet, beschreiben aber unterschiedliche Ebenen, und die Unterscheidung ist wichtig, wenn Sie entscheiden, wo Sie benutzerdefinierte Logik platzieren.
| Aspekt | Selenium Core-Erweiterung | Selenium IDE-Erweiterung |
|---|---|---|
| Was es erweitert | Die wรคhrend der Wiedergabe verwendete Selenese-Befehlsbibliothek | Die IDE-Anwendung selbst |
| Datei geladen | user-extensions.js | user-extensions-ide.js in der alten IDE, ein Plugin-Manifest in der aktuellen IDE |
| Typische Verwendung | Neue Aktionen, Zubehรถr und Lokalisierungsstrategien | Neue Menรผpunkte, Bedienfelder, Formate und Recorderverhalten |
| Berรผhrte Gegenstรคnde | Selenium.prototype und PageBot.prototype | IDE-Editor- und Recorder-APIs |
| Lรคuft wรคhrend | Testausfรผhrung | Erstellung und Aufzeichnung |
Kurz gesagt, eine Core-Erweiterung verรคndert, was ein Test leisten kann, wรคhrend eine IDE-Erweiterung verรคndert, was das Tool leisten kann.
Wie die Moderne Selenium Die IDE ersetzt user-extensions.js
Das Firefox-Plugin Selenium Die IDE funktionierte nicht mehr, als Firefox Umstellung auf die WebExtensions-Architektur und die IDE wurde als Chrome neu geschrieben. Firefox und der Edge-Browsererweiterung. Durch diese รberarbeitung wurde das oben gezeigte Optionsfeld entfernt, sodass keine Mรถglichkeit mehr besteht, auf eine user-extensions.js-Datei zu verweisen. Zwei unterstรผtzte Alternativen decken denselben Bereich ab.
- Der Befehl zum Ausfรผhren des Skripts. Fรผr einmalige Zwecke JavaSkript, fรผgen Sie ein Skript ausfรผhren or Fรผhre asynchrones Skript aus Fรผhre den Test direkt aus und speichere das Ergebnis in einer Variablen. Dies entspricht am ehesten einer kleinen benutzerdefinierten Aktion.
- Ein Plugin. Fรผr wiederverwendbare Befehle erstellen Sie eine Browsererweiterung, die ein Manifest in der IDE registriert. Das Manifest deklariert jeden neuen Befehl mit einer ID, einem Namen, einem optionalen Typ und einer Dokumentation und kann auch neue Locators deklarieren.
Das Manifest wird registriert, indem eine Nachricht an die IDE-Erweiterung gesendet wird, wie in der offiziellen Dokumentation gezeigt. Selenium IDE-Plugin-Dokumentation.
browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);
Die Namenskonvention bleibt auch nach der Migration erhalten: Ein Plugin-Befehl wird weiterhin nur einmal deklariert und dann in jedem Test wiederverwendet, genau wie es bei einer Core-Erweiterung der Fall war.
Beliebte Erweiterungen und Plug-ins, die verwendet werden in Selenium IDE
Die unten aufgefรผhrten Add-ons waren in der alten IDE am weitesten verbreitet. Einige davon, wie beispielsweise Ablaufsteuerung und Screenshot-Funktion bei Fehlern, sind mittlerweile in die aktuelle IDE integriert oder als gepflegte Plugins verfรผgbar.
| Name | Zweck |
|---|---|
| Favoriten | Um eine Testsuite als Favorit zu markieren und sie mit einem Klick auszufรผhren |
| Flex Pilot X | Fรผr Flex-basierte Automatisierung |
| FlexMonkium | Fรผr Adobe Flex-basierte Aufnahme und Wiedergabe testing in Selenium IDE |
| Dateiprotokollierung | Zum Speichern von Protokollen in einer Datei |
| Flow Control | Zur Steuerung des Testausfรผhrungsablaufs |
| Markieren Sie Elemente | Um ein Web-Steuerelement hervorzuheben |
| Implizites Warten | Auf ein Element eine bestimmte Zeit lang warten |
| Screenshot bei Fehler | Machen Sie bei einem Fehler einen Screenshot |
| Testergebnisse | Speichern Sie die Testfall Ergebnis fรผr eine Testsuite mit einem Klick |
Die alte SeleniumDie Downloadseite des Hauptsitzes, auf der diese Dateien gehostet wurden, existiert nicht mehr. Aktuelle Plugins und die IDE selbst werden von der [Website-Adresse/Plattform einfรผgen] vertrieben. Selenium IDE-Projektseite und von Chrome aus Firefox und Edge-Add-on-Stores.
Laden Sie Selenium In diesem Tutorial verwendete Kernerweiterung









