Objectopslag in Selenium (XML- en eigenschappenbestand)
Wat is een objectrepository?
Een objectrepository is een gemeenschappelijke opslaglocatie voor alle objecten. In Selenium WebDriver-context zijn objecten doorgaans de locators die worden gebruikt om webelementen op unieke wijze te identificeren.
Het grote voordeel van het gebruik van een objectrepository is de scheiding van objecten uit testgevallen. Als de locatorwaarde van één webelement verandert, hoeft alleen de objectrepository te worden gewijzigd in plaats van wijzigingen aan te brengen in alle testgevallen waarin de locator is gebruikt. Het onderhouden van een objectrepository vergroot de modulariteit van de raamwerkimplementatie.
Typen objectopslagplaatsen in Selenium Webstuurprogramma
Selenium WebDriver biedt standaard geen ingebouwde objectrepository. Objectopslagplaatsen kunnen echter worden gebouwd met behulp van de sleutel-waardepaarbenadering, waarbij de sleutel verwijst naar de naam die aan het object is gegeven en waarde verwijst naar de eigenschappen die worden gebruikt om een object op de webpagina uniek te identificeren.
Hieronder staan de typen objectrepositories die kunnen worden gemaakt in Selenium Webstuurprogramma.
- Objectrepository met behulp van het eigenschappenbestand
- Objectrepository met behulp van XML-bestand
Selenium Web Driver Object-repository met behulp van het eigenschappenbestand
In deze benadering is het eigenschappenbestand een tekstbestand waarin gegevens worden opgeslagen in de vorm van sleutel-waardeparen. De onderstaande tutorial behandelt de volgende onderwerpen.
- Een eigenschappenbestand maken in Eclipse
- Gegevens opslaan in een eigenschappenbestand
- Gegevens uit eigenschappenbestand lezen
- Eigenschappenbestand gebruiken in testscripts
Stap 1) Een eigenschappenbestand maken in Eclipse
- Om te beginnen moet de onderstaande Java-projectstructuur worden gemaakt in Eclipse. Projectnaam en pakketnaam kunnen elke geldige naam zijn.
- Klik met de rechtermuisknop op de hoofdprojectmap en selecteer Nieuw-> Overige
- In het volgende venster selecteert u Algemeen -> Bestand en klikt u op de knop 'Volgende'
- Geef een geldige bestandsnaam op met de extensie '.properties' in het nieuwe bestandsbronvenster en klik op de knop 'Voltooien'
- Een bestand met de naam 'application.properties' moet worden weergegeven in Projectstructuur
Stap 2) Gegevens opslaan in het eigenschappenbestand
- Gegevens worden opgeslagen in het eigenschappenbestand in de vorm van sleutel-waardeparen, waarbij de sleutel uniek is in het hele bestand.
- We zullen proberen het eigenschappenbestand te gebruiken om webelementen te identificeren met behulp van locatorwaarden.
- Open het bestand application.properties Eclipse en sla de volgende gegevens op
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit
4) Voor deze tutorial wordt de volgende demo-website gebruikt:
http://demo.guru99.com/test/guru99home/
. Hier is het testscenario:
- Klik op de link Mobiel testen met XPATH
- Navigeer terug
- Voer gegevens in het e-mailtekstvak in met behulp van ID
- Klik op de knop Aanmelden met ID
Stap 3) Gegevens uit het eigenschappenbestand lezen
- Het lezen van gegevens uit het eigenschappenbestand kan worden gedaan met behulp van de ingebouwde klasse Properties die wordt geleverd in het pakket java.util.
- In eerste instantie moet een object van de klasse Properties worden gemaakt, zoals hieronder
Properties obj = new Properties();
- We moeten een object van de FileInputStream-klasse maken met het pad naar het eigenschappenbestand
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- Het lezen van gegevens uit het eigenschappenbestand kan worden gedaan met behulp van de laadmethode die wordt aangeboden door de klasse Properties in Java. De onderstaande code demonstreert het gebruik van de laadmethode.
Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties"); obj.load(objfile); String mobileTesting = obj.getProperty("MobileTesting");
De string 'mobileTesting' bevat de XPATH om de Mobile Testing-link binnen de webpagina te identificeren.
Stap 4) Eigenschappenbestand gebruiken in testscripts
Het eigenschappenbestand kan in testscripts worden gebruikt door gegevens uit een eigenschappenbestand te lezen en de gegevens als parameter door te geven aan de findElement-methode. De onderstaande code demonstreert het gebruik van gegevens die zijn gelezen uit het eigenschappenbestand in testscripts.
driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click(); driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();
Hieronder vindt u de volledige code die voor het bovenstaande testscenario wordt gebruikt.
package com.objectrepository.demo; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class DemoOR { public static void main(String[] args) throws IOException { // Create WebDriver Instance WebDriver driver; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://demo.guru99.com/test/guru99home/"); driver.manage().window().maximize(); // Load the properties File Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties"); obj.load(objfile); // Nagigate to link Mobile Testing and Back driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click(); driver.navigate().back(); // Enter Data into Form driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(obj.getProperty("SignUpButton"))).click(); } }
Selenium WebDriver Object Repository met behulp van XML-bestand
XML staat voor Extensible Markup Language. Een XML-bestand gebruikt Document Object Model (DOM) als basisstructuur. Het XML-bestandsformaat repliceert het HTML-formaat waarop de webpagina is gebouwd. Hieronder vindt u de lijst met onderwerpen die aan bod zullen komen.
- Een XML-bestand maken in Eclipse
- Gegevens opslaan in een XML-bestand
- Gegevens uit XML-bestand lezen
- XML-bestand gebruiken in testscripts
Stap 1) Een XML-bestand maken in Eclipse
- De onderstaande Java-projectstructuur moet worden aangemaakt Eclipse.
- Klik met de rechtermuisknop op de projectmap en selecteer Nieuw -> Overige
- Selecteer het XML-bestand in de XML-map en klik op de knop 'Volgende'
- Voer een geldige XML-bestandsnaam in en klik op de knop 'Voltooien'
- Er wordt een XML-bestand toegevoegd aan de projectmap, zoals hieronder weergegeven
Stap 2) Gegevens opslaan in een XML-bestand
Gegevens kunnen worden opgeslagen in een XML-bestand in de vorm van een Document Object Model (DOM). Voor de eenvoud kunnen we het onderstaande testscenario als voorbeeld gebruiken.
- Klik op de link Mobiel testen met XPATH
- Navigeer terug naar de startpagina
- Voer gegevens in het e-mailtekstvak in met behulp van ID
- Klik op de knop Aanmelden met ID
Hieronder ziet u het formaat van het XML-bestand dat moet worden gebruikt.
<menu> <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting> <email> philadelphia-field-email</email> <signup> philadelphia-field-submit </signup> </menu>
Sla de bovenstaande XML-code op in eigenschappen.xml
Op het tabblad Ontwerp ziet u het
Stap 3) Gegevens uit een XML-bestand lezen
1. Het lezen van gegevens uit een XML-bestand kan worden bereikt met behulp van de ingebouwde 'dom4j'-klasse in Java. Houd er rekening mee dat u de onderstaande JAR-bestanden aan het buildpad van uw project moet toevoegen voordat u doorgaat met de code.
- jaxen.jar
- dom4j-1.6.jar
2. Hieronder vindt u de code om gegevens uit het XML-bestand te lezen.
File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml"); SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputFile); String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText(); String emailTextBox = document.selectSingleNode("//menu/email").getText(); String signUpButton = document.selectSingleNode("//menu/signup").getText();
3. In eerste instantie moeten we een File-object maken en dit als parameter doorgeven aan de 'read'-methode van de SAXReader-klasse. Zodra de XML-bestandsgegevens met succes zijn gelezen, hebben we toegang tot individuele knooppunten van het XML-document met behulp van de 'selectSingleNode'-methode.
Stap 4) XML-bestand gebruiken in testscripts
Een XML-bestand kan in testscripts worden gebruikt door gegevens uit een XML-bestand te lezen en de gegevens als parameter door te geven aan de findElement-methode. De onderstaande code demonstreert het gebruik van gegevens die uit een XML-bestand zijn gelezen in testscripts.
driver.findElement(By.xpath(mobileTesting)).click(); driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click();
De onderstaande code demonstreert het gebruik van een XML-bestand in Selenium WebDriver
package com.objectrepository.demo; import java.io.*; import java.util.*; import org.dom4j.*; import org.dom4j.io.SAXReader; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class DemoORXML { public static void main(String[] args) throws DocumentException { // Creating WebDriver Instance WebDriver driver; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://demo.guru99.com/test/guru99home/"); driver.manage().window().maximize(); // Reading XML File File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml"); SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputFile); String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText(); String emailTextBox = document.selectSingleNode("//menu/email").getText(); String signUpButton = document.selectSingleNode("//menu/signup").getText(); //Navigating to Mobile Testing and back driver.findElement(By.xpath(mobileTesting)).click(); driver.navigate().back(); //Entering Form Data driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click(); } }
Download de webdriver Eclipse Project
Samenvatting
- Een objectrepository is een gemeenschappelijke opslaglocatie voor alle objecten
- Selenium WebDriver biedt standaard geen ingebouwde objectrepository
- U kunt twee soorten objectrepository's maken Selenium
- Objectrepository met behulp van het eigenschappenbestand
- Objectrepository met behulp van XML-bestand
- Het eigenschappenbestand is een tekstbestand waarin gegevens worden opgeslagen in de vorm van sleutel-waardeparen
- Het XML-bestandsformaat repliceert het HTML-formaat waarop de webpagina is gebouwd.