Selenium Kerneudvidelser (User-Extensions.js)
For at forstรฅ udvidelser, lad os fรธrst forstรฅ de tre sรธjler af selen IDE
- Handling: Hvilken handling du udfรธrer pรฅ UI-skรฆrmen
- Assessorer/pรฅstand: Hvilken verifikation du foretager pรฅ data, du fรฅr fra UI
- Locator Strategy: Hvordan kan vi finde elementet i UI.
Nu Selenium IDE har et meget modent bibliotek med masser af Actions, Assertion/Assessors og Locator Strategies.
Men nogle gange er vi nรธdt til at tilfรธje noget mere funktionalitet til det for vores projektkrav. I den situation kan vi udvide dette bibliotek ved at tilfรธje vores tilpassede udvidelser. Disse brugerdefinerede udvidelser kaldes 'Brugerudvidelse'.
For eksempel har vi brug for en handling, som kan konvertere teksten til store bogstaver, fรธr den udfyldes i et webelement. Du kan ikke finde denne handling i standardhandlingsbiblioteket. I sรฅdanne tilfรฆlde kan du oprette din egen 'Brugerudvidelse'. I denne vejledning lรฆrer vi, hvordan du opretter brugerudvidelse for at konvertere tekst til store bogstaver
Krav til oprettelse Selenium brugerudvidelse
For at oprette brugerudvidelse til Selenium IDE, vi skal kende grundbegrebet JavaScript og Java Script prototype objekt koncept.
For at oprette din brugerudvidelse skal du oprette Java script-metoder og tilfรธje dem til selenobjektprototypen og PageBot-objektprototypen.
Hvordan Selenium IDE genkender User Extension?
Efter tilfรธjelse af brugerudvidelse til Selenium IDE nรฅr vi starter Selenium IDE, alle disse udvidelser i javascript prototype bliver indlรฆst, og Selenium IDE genkender dem ved deres navn.
Sรฅdan opretter du brugerudvidelse
Trin 1) Handlingโ alle handlinger startes med "do", dvs. hvis handlingen er for store bogstaver, vil dens navn vรฆre doTextUpperCase. Nรฅr vi tilfรธjer denne handlingsmetode Selenium SDI, Selenium IDE vil selv oprette en ventemetode for denne handling. Sรฅ i dette tilfรฆlde, nรฅr vi skaber doTextUpperCase handling, Selenium IDE vil oprette en tilsvarende ventefunktion som TextUpperCaseAndWait. Den kan acceptere to parametre
Eksempel: Teksthandling med store bogstaver
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);
};
Trin 2) Bedรธmmere/pรฅstand- Alle bedรธmmere, der er registreret i selenobjektprototype, vil blive prรฆfikset
ved "fรฅ" eller "er" Eks. getValueFromCompoundTable , isValueFromCompoundTable . Den kan acceptere to parametre, en for mรฅl og en anden for vรฆrdifelt i testcase.
For hver Assessor vil der vรฆre tilsvarende verifikationsfunktioner foran med "verify", "assert" og ventefunktionsprรฆfikset med "waitFor"
Eksempel: For tekstbedรธmmere med store bogstaver
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;
};
Trin 3) Lokaliseringsstrategi- Hvis vi รธnsker at oprette vores egen funktion til at lokalisere et element, sรฅ
vi skal udvide PageBot-prototypen med en funktion med prรฆfikset "locateElementBy."
Det vil tage to parametre, den fรธrste vil vรฆre lokaliseringsstrengen og den anden vil vรฆre dokumentet
hvor det skal sรธges.
Eksempel: Til tekstsรธgning af store bogstaver
// 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;
};
Hvordan bruger man nyoprettet kerneudvidelse?
- Gรฅ til Selenium IDE
Klik pรฅ Indstillinger -> Indstillinger...
- I afsnittet Generelt skal du vรฆlge placeringen af โโden nyoprettede Selenium Kerneudvidelse
- Klik pรฅ OK og genstart Selenium IDE
- Du finder udvidelsen i kommandolisten
Her er en liste over populรฆre udvidelser/plug-in, der bruges i Selenium IDE
| Navn | Formรฅl |
|---|---|
| foretrukne | At markere en testsuite som favorit og udfรธre dem med et enkelt klik |
| Flex Pilot X | Til Flex baseret automatisering |
| FlexMonkium | Til Adobe Flex-baseret optagelse og afspilning Test in Selenium IDE |
| Fillogning | Til at gemme logfiler i en fil |
| Flow Kontrol | For at kontrollere testudfรธrelsesflowet |
| Fremhรฆv elementer | For at fremhรฆve en webkontrol |
| Implicit Vent | At vente pรฅ et element i en bestemt tidsgrรฆnse |
| Skรฆrmbillede ved fejl | Tag et skรฆrmbillede af fejl |
| Test resultater | Gem Test sag resultat for en testsuite med et enkelt klik |
Du kan fรฅ dem alle og mange flere fra SeleniumHQ's officielle sides downloadsektion
http://docs.seleniumhq.org/download/
Resumรฉ
- Der er tre dele af Selenium IDE, Action, Assessors/Assertion, Locator strategi.
- Brugerudvidelse oprettes, nรฅr Selenium IDE opfylder ikke det nuvรฆrende krav.
- For at oprette brugerudvidelse er det nรธdvendigt at tilfรธje javascript til seleniums objektprototype.
- Efter oprettelse af udvidelse er det nรธdvendigt at tilfรธje det Selenium IDE og genstart IDE.









