Nesne Deposu Selenium (XML ve Özellikler Dosyası)
Nesne Deposu Nedir?
Nesne deposu, tüm nesneler için ortak bir depolama konumudur. İçinde Selenium WebDriver bağlamında nesneler genellikle web öğelerini benzersiz şekilde tanımlamak için kullanılan konum belirleyicilerdir.
Nesne deposunu kullanmanın en büyük avantajı, nesnelerin test senaryolarından ayrılmasıdır. Bir web öğesinin konum belirleyici değeri değişirse, konum belirleyicinin kullanıldığı tüm test senaryolarında değişiklik yapmak yerine yalnızca nesne deposunun değiştirilmesi gerekir. Bir nesne deposunun bakımı, çerçeve uygulamasının modülerliğini artırır.
Nesne Deposu Türleri Selenium Web Sürücüsü
Selenium WebDriver varsayılan olarak yerleşik bir nesne deposu sunmaz. Bununla birlikte, nesne depoları anahtar-değer çifti yaklaşımı kullanılarak oluşturulabilir; burada anahtar, nesneye verilen adı belirtir ve değer, web sayfası içindeki bir nesneyi benzersiz şekilde tanımlamak için kullanılan özellikleri belirtir.
Aşağıda, oluşturulabilecek nesne depolarının türleri verilmiştir: Selenium WebDriver.
- Özellikler dosyasını kullanan Nesne Havuzu
- XML dosyasını kullanan Nesne Havuzu
Selenium Özellikler dosyasını kullanan Web Sürücüsü Nesnesi deposu
Bu yaklaşımda, özellikler dosyası, verilerin anahtar-değer çiftleri biçiminde depolandığı bir metin dosyasıdır. Aşağıdaki eğitim, aşağıdaki konuları ele alacaktır.
- Eclipse'de bir özellik dosyası oluşturma
- Verilerin özellikler dosyasına kaydedilmesi
- Özellikler dosyasından veri okuma
- Özellikler dosyasını test komut dosyalarında kullanma
Adım 1) Eclipse'de bir özellik dosyası oluşturma
- Başlamak için, aşağıdaki java proje yapısının Eclipse'de oluşturulması gerekiyor. Proje adı ve paket adı herhangi geçerli bir ad olabilir.
- Ana proje klasörüne sağ tıklayın ve Yeni-> Diğer'i seçin
- Bir sonraki pencerede Genel -> Dosya'yı seçin ve 'İleri' düğmesine tıklayın
- Yeni dosya kaynağı penceresinde '.properties' uzantılı geçerli bir dosya adı girin ve 'Son' düğmesine tıklayın
- Proje Yapısında 'application.properties' adlı bir dosya görüntülenmelidir
Adım 2) Verilerin özellikler dosyasına kaydedilmesi
- Veriler, özellikler dosyasında anahtar/değer çiftleri biçiminde depolanır ve anahtar, dosya genelinde benzersizdir.
- Konumlandırıcı değerlerini kullanarak web öğelerini tanımlamak için özellikler dosyasını kullanmaya çalışacağız.
- application.properties dosyasını açın Eclipse ve aşağıdaki verileri depola
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit
4) Bu eğitim için aşağıdaki demo web sitesi kullanılmaktadır:
https://demo.guru99.com/test/guru99home/. İşte Test senaryosu:
- XPATH kullanarak Mobil Test bağlantısına tıklayın
- Geri git
- Kimliği kullanarak e-posta metin kutusuna veri girin
- Kimlik kullanarak Kaydol düğmesine tıklayın
Adım 3) Özellikler dosyasından veri okuma
- Özellikler dosyasından veri okumak, Java.util paketinde sağlanan yerleşik Properties sınıfı kullanılarak yapılabilir.
- Başlangıçta Properties sınıfına ait bir nesnenin aşağıdaki gibi oluşturulması gerekmektedir.
Properties obj = new Properties();
- Özellikler dosyasının yolunu içeren FileInputStream sınıfının bir nesnesini oluşturmamız gerekiyor
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- Özellikler dosyasından veri okumak, Java'daki Properties sınıfının sunduğu yükleme yöntemi kullanılarak yapılabilir. Aşağıdaki kod, load yönteminin kullanımını gösterir.
Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties"); obj.load(objfile); String mobileTesting = obj.getProperty("MobileTesting");
'mobileTesting' dizesi, web sayfasındaki Mobil Test bağlantısını tanımlamak için XPATH'yi içerecektir.
Adım 4) Özellikler dosyasını test komut dosyalarında kullanma
Özellikler dosyası, bir özellikler dosyasından veri okunarak ve veriyi parametre olarak findElement yöntemine ileterek test komut dosyalarında kullanılabilir. Aşağıdaki kod, özellikler dosyasından okunan verilerin test komut dosyalarında kullanımını gösterir.
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();
Yukarıdaki test senaryosu için kullanılan kodun tamamı aşağıdadır.
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("https://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 XML Dosyasını Kullanan WebDriver Nesne Havuzu
XML, Genişletilebilir İşaretleme Dili anlamına gelir. Bir XML Dosyası, temel yapı olarak Belge Nesne Modelini (DOM) kullanır. XML Dosya formatı, web sayfasının oluşturulduğu HTML formatını kopyalayacaktır. Aşağıda ele alınacak konuların listesi bulunmaktadır.
- Eclipse'de XML dosyası oluşturma
- Verilerin XML dosyasına kaydedilmesi
- XML dosyasından veri okuma
- Test komut dosyalarında XML dosyasını kullanma
Adım 1) Eclipse'te bir XML dosyası oluşturma
- Aşağıdaki Java proje yapısının oluşturulması gerekiyor Eclipse.
- Proje klasörüne sağ tıklayın, Yeni -> Diğer'i seçin
- XML klasörü içindeki XML Dosyasını seçin ve 'İleri' düğmesine tıklayın
- Geçerli bir XML Dosyası adı girin ve 'Son' düğmesine tıklayın
- Proje klasörüne aşağıda gösterildiği gibi bir XML dosyası eklenecektir.
Adım 2) Verilerin XML dosyasına kaydedilmesi
Veriler XML dosyasında Belge Nesne Modeli (DOM) biçiminde saklanabilir. Basitlik açısından aşağıdaki test senaryosunu örnek olarak kullanabiliriz.
- XPATH kullanarak Mobil Test bağlantısına tıklayın
- Ana sayfaya geri dön
- Kimliği kullanarak e-posta metin kutusuna veri girin
- Kimlik kullanarak Kaydol düğmesine tıklayın
Kullanılacak XML Dosyasının formatı aşağıdadır.
<menu> <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting> <email> philadelphia-field-email</email> <signup> philadelphia-field-submit </signup> </menu>
Yukarıdaki XML kodunu Properties.xml dosyasında saklayın
Tasarım sekmesinde göreceksiniz
Adım 3) XML dosyasından veri okuma
1. XML dosyasından veri okumak, Java'daki yerleşik 'dom4j' sınıfı kullanılarak gerçekleştirilebilir. Lütfen koda devam etmeden önce aşağıdaki JAR dosyalarını projenizin yapım yoluna eklemeniz gerektiğini unutmayın.
- jaxen.jar
- dom4j-1.6.jar
2. XML dosyasından veri okumak için gerekli kod aşağıdadır.
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. Başlangıçta bir File nesnesi oluşturup bunu SAXReader sınıfının 'read' metoduna parametre olarak aktarmamız gerekiyor. XML dosyası verileri başarıyla okunduktan sonra 'selectSingleNode' yöntemini kullanarak XML belgesinin ayrı ayrı düğümlerine erişebiliriz.
Adım 4) XML dosyasını test komut dosyalarında kullanma
XML dosyası, XML dosyasındaki verileri okuyarak ve verileri parametre olarak findElement yöntemine ileterek test komut dosyalarında kullanılabilir. Aşağıdaki kod, XML dosyasından okunan verilerin test komut dosyalarında kullanımını gösterir.
driver.findElement(By.xpath(mobileTesting)).click(); driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click();
Aşağıdaki kod Selenium WebDriver'da XML dosyasının kullanımını gösterir
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("https://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(); } }
Web Sürücüsünü İndirin Eclipse Proje
ÖZET
- Nesne deposu, tüm nesneler için ortak bir depolama konumudur
- Selenium WebDriver varsayılan olarak yerleşik bir nesne deposu sunmaz
- İçinde 2 Tür Nesne Havuzu oluşturabilirsiniz Selenium
- Özellikler dosyasını kullanan Nesne Havuzu
- XML dosyasını kullanan Nesne Havuzu
- Özellikler dosyası, verilerin anahtar/değer çiftleri biçiminde depolandığı bir metin dosyasıdır
- XML Dosya formatı, web sayfasının oluşturulduğu HTML formatını kopyalayacaktır.