Selenium Otomasyon Çerçevesi: Veriye Dayalı, Anahtar Kelime Odaklı & Hibrit

İçindekiler:

Anonim

Selenium Framework nedir?

Selenyum Çerçeve kod bakımı kolay ve verimli hale getiren bir kod yapıdır. Çerçeveler olmadan, kullanıcılar "kodu" ve "verileri" ne yeniden kullanılabilir ne de okunabilir olan aynı konuma yerleştirebilir. Çerçeveler, artan kod yeniden kullanılabilirliği, daha yüksek taşınabilirlik, azaltılmış komut dosyası bakım maliyeti, daha iyi kod okunabilirliği vb. Gibi faydalı sonuçlar üretir.

Manuel test durumlarını otomatikleştirmek için Selenium WebDriver tarafından oluşturulan başlıca üç tür çerçeve vardır.

  • Veriye Dayalı Test Çerçevesi
  • Anahtar Kelime Odaklı Test Çerçevesi
  • Hibrit Test Çerçevesi

Selenium'da Veriye Dayalı Çerçeve

Selenium'daki Veriye Dayalı Çerçeve, veri setlerini test senaryosundan ayırmanın bir yöntemidir. Veri kümeleri test senaryosundan ayrıldıktan sonra, kodu değiştirmeden belirli bir işlevsellik için kolayca değiştirilebilir. Excel, .csv, .xml veya bazı veritabanı tabloları gibi harici dosyalardan test durumlarını ve paketlerini almak için kullanılır.

Bir Excel okumak veya yazmak için Apache, çok ünlü bir kütüphane İÇN'si sağlar. Bu kütüphane okuma ve hem yazma yeteneğine yeterlidir XLS ve XLSX Excel dosya biçimini.

XLS dosyalarını okumak için POI kitaplığı tarafından bir HSSF uygulaması sağlanır.

Okumak için XLSX, XSSF uygulanması POI kütüphanesinde seçim olacaktır. Bu uygulamaları detaylı olarak inceleyelim.

Önceki eğiticimizde Veriye Dayalı Test hakkında bilgi edindik

Selenium'da Anahtar Kelime Odaklı Çerçeve

Selenium'daki Anahtar Kelime Odaklı Çerçeve, ortak işlevler ve talimatlar için anahtar kelimeleri ayırarak otomatik testi hızlandırmak için kullanılan bir yöntemdir. Yapılacak tüm işlemler ve talimatlar bir Excel sayfası gibi bazı harici dosyalarda yazılır. Kullanıcılar, test etmek istedikleri işlevleri kolayca kontrol edebilir ve belirleyebilir.

İşte tam çerçeve nasıl görünüyor

Gördüğünüz gibi 5 adımlı bir çerçeve. Ayrıntılı olarak adım adım inceleyelim

Aşama 1)

  • Execute.java sürücü betiği ReadGuru99ExcelFile.java'yı çağıracaktır.
  • ReadGuru99ExcelFile.java'da bir Excel'den veri okumak için POI komut dosyası vardır

Adım 2)

  • ReadGuru99ExcelFile.java, TestCase.xlsx'teki verileri okuyacaktır.
  • İşte sayfa nasıl görünüyor?
  • Excel dosyasında yazılan anahtar kelimelere göre çerçeve, UI üzerinde işlemi gerçekleştirecektir.
  • Örneğin, 'Oturum Aç' düğmesine tıklamamız gerekiyor. Buna karşılık, Excel'imizde bir 'Tıklama' anahtar kelimesi olacaktır. Artık OT, bir Oturum Açma düğmesini tanımlamak için bir sayfada yüzlerce düğmeye sahip olabilir, Excel'de Nesne Adı olarak oturum açma Düğmesi ve nesne türünü bir ad olarak gireceğiz (yukarıdaki resimde vurgulanan satıra bakın). Nesne Türü Xpath, CSS adı veya başka herhangi bir değer olabilir

Adım 3) ReadGuru99ExcelFile.java bu verileri Execute.java sürücü betiğine aktaracaktır.

Adım 4)

  • Tüm UI web öğelerimiz için, öğe bulucularını (Xpath, ad, CSS yolu, sınıf adı vb.)
  • Execute.java (sürücü betiğimiz) tüm Nesne Deposunu okuyacak ve bir değişkende saklayacaktır.
  • Bu nesne havuzunu okumak için, okumak için getObjectRepository yöntemine sahip bir ReadObject sınıfına ihtiyacımız var.

NOT: Neden bir nesne deposu oluşturmamız gerektiğini düşünebilirsiniz. Cevap, kod bakımına yardımcı olur. Örneğin, 10 farklı test durumunda name = btnlogin olan düğmeyi kullanıyoruz. Gelecekte, geliştirici, btnlogin olan adı göndermeye karar verir. 10 test vakasının hepsinde değişiklik yapmanız gerekecektir. Bir nesne deposu olması durumunda, değişikliği arşivde yalnızca bir kez yapacaksınız.

Adım 5)

  • Sürücü, verileri Excel ve Nesne Deposundan UIOperation sınıfına aktaracaktır.
  • UIOperation sınıfı, excel'de bahsedilen CLICK, SETTEXT vb. Gibi anahtar kelimelere karşılık gelen eylemleri gerçekleştirmek için işlevlere sahiptir.
  • UIOperation sınıfı, web öğeleri üzerinde işlemler gerçekleştirmek için kodun gerçek uygulamasına sahip bir Java sınıfıdır.

Tam proje şöyle görünecek-

Bir örneğe bakalım:

Test Senaryosu

  • 2 test durumu yürütüyoruz
  • Test Senaryosu 1:
  • Goto http://demo.guru99.com/V4/
  • Kullanıcı Kimliğini Girin
  • Parolanı Gir
  • Sıfırla'yı tıklayın
  • Test Senaryosu 2:
  • Goto http://demo.guru99.com/V4/
  • Kullanıcı Kimliğini Girin
  • Parolanı Gir
  • Oturum Aç'a tıklayın

object.properties

url = http: //demo.guru99.com/V4/

kullanıcı adı = uid

password = password

title = barone

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

excelExportAndFileIO paketi;java.io.File içe aktarma;java.io.FileInputStream'i içe aktarın;java.io.IOException'ı içe aktarın;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) IOException {// xlsx dosyasını açmak için bir File sınıfı nesnesi oluşturunDosya dosya = yeni Dosya (dosyaYolu + "\\" + dosyaAdı);// Excel dosyasını okumak için FileInputStream sınıfının bir nesnesini oluşturunFileInputStream inputStream = new FileInputStream (dosya);Çalışma kitabı guru99Workbook = null;// Alt satırda dosya adını bölerek ve yalnızca uzantı adını alarak dosya uzantısını bulunString fileExtensionName = dosyaAdı.substring (dosyaAdı.indexOf ("."));// Dosyanın xlsx dosyası olup olmadığını kontrol edineğer (fileExtensionName.equals (". xlsx")) {// Eğer xlsx dosyasıysa XSSFWorkbook sınıfının nesnesini yaratınguru99Workbook = yeni XSSFWorkbook (inputStream);}// Dosyanın xls dosyası olup olmadığını kontrol edinelse if (fileExtensionName.equals (". xls")) {// Eğer bu xls dosyası ise XSSFWorkbook sınıfının nesnesini yaratınguru99Workbook = yeni HSSFWorkbook (inputStream);}// Çalışma kitabının içindeki sayfayı adına göre okuyunSayfa guru99Sheet = guru99Workbook.getSheet (sheetName);return guru99Sheet;}}

ReadObject.java

paket operasyonu;java.io.File içe aktarma;java.io.FileInputStream'i içe aktarın;java.io.IOException'ı içe aktarın;içe aktarma java.io.InputStream;import java.util.Properties;public class ReadObject {Özellikler p = new Özellikler ();public Özellikler getObjectRepository (), IOException {// Nesne veri havuzu dosyasını okuInputStream akışı = new FileInputStream (yeni Dosya (System.getProperty ("user.dir") + "\\ src \\ objects \\ object.properties"));// tüm nesneleri yüklep.load (akış);dönüş p;}}

UIOperation.java

paket operasyonu;import java.util.Properties;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;public class UIOperation {WebDriver sürücüsü;public UIOperation (WebDriver sürücüsü) {this.driver = sürücü;}public void perform (Özellikler p, String işlemi, String objectName, String objectType, String değeri) Exception {System.out.println ("");switch (operation.toUpperCase ()) {durumda "TIKLAYIN":// Tıklama gerçekleştirdriver.findElement (this.getObject (p, objectName, objectType)). click ();kırmak;durum "SETTEXT":// Metni kontrol üzerine ayarladriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (değer);kırmak;durum "GOTOURL":// Uygulama url'sini alındriver.get (p.getProperty (değer));kırmak;durum "GETTEXT":// Bir elemanın metnini alındriver.findElement (this.getObject (p, objectName, objectType)). getText ();kırmak;varsayılan:kırmak;}}/ *** Nesne türünü ve değerini kullanarak BY öğesi bulun* @param p* @param objectName* @param objectType* @dönüş* @throws Exception* /private GetObject tarafından (Özellikler p, String objectName, String objectType) Exception {// xpath ile bulif (objectType.equalsIgnoreCase ("XPATH")) {return By.xpath (p.getProperty (nesneAdı));}// sınıfa göre bulelse if (objectType.equalsIgnoreCase ("CLASSNAME")) {SınıfAdı (p.getProperty (nesneAdı)) döndürür;}// isme göre bulelse if (objectType.equalsIgnoreCase ("NAME")) {return By.name (p.getProperty (nesneAdı));}// css ile bulelse if (objectType.equalsIgnoreCase ("CSS")) {return By.cssSelector (p.getProperty (nesneAdı));}// bağlantıya göre bulelse if (objectType.equalsIgnoreCase ("LINK")) {return By.linkText (p.getProperty (nesneAdı));}// kısmi bağlantı ile bulelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {return By.partialLinkText (p.getProperty (nesneAdı));}Başka{yeni İstisna oluştur ("Yanlış nesne türü");}}}

ExecuteTest.java

paket testCases;import java.util.Properties;içe aktarma işlemi.ReadObject;ithalat işlemi.UIOperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;excelExportAndFileIO.ReadGuru99ExcelFile dosyasını içe aktarın;public class ExecuteTest {@Ölçekpublic void testLogin () İstisna {// TODO Otomatik oluşturulan yöntem saplamasıWebDriver webdriver = new FirefoxDriver ();ReadGuru99ExcelFile dosyası = yeni ReadGuru99ExcelFile ();ReadObject nesnesi = new ReadObject ();Özellikler allObjects = object.getObjectRepository ();UIOperation işlemi = yeni UIOperation (webdriver);// Anahtar kelime sayfasını okuyunSayfa guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Excel dosyasındaki satır sayısını bulint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Okumak için excel dosyasının tüm satırları üzerinde bir döngü oluşturunfor (int i = 1; i " + row.getCell (0) .toString () + "Başladı");}}}}

Yürütmeden sonra çıktı şöyle görünecektir -

Bu Öğreticide Demo için Selenium Proje Dosyalarını İndirin

Hibrit Çerçeve

Selenium'daki Hibrit Çerçeve , hem Anahtar kelimeye dayalı çerçevenin hem de Veriye dayalı çerçevenin avantajını kullandığımız bir kavramdır. Manuel test uzmanlarının, çerçevede kodlama yapmadan sadece anahtar kelimelere, test verilerine ve nesne havuzuna bakarak test senaryoları oluşturmasına olanak tanıyan kullanımı kolay bir çerçevedir.

Burada anahtar kelimeler için, test senaryolarını sürdürmek için Excel dosyalarını kullanacağız ve test verileri için Testng çerçevesinin sağlayıcısı olan verileri kullanabiliriz.

Burada, hibrit çerçevemizde, Anahtar kelimeye dayalı çerçevede hiçbir şeyi değiştirmemize gerek yok, burada sadece ExecuteTest.java dosyasını HybridExecuteTest.java dosyasıyla değiştirmemiz gerekiyor.

Bu HybridExecuteTest dosyası, veri sağlayıcı konseptiyle yürütülen anahtar kelime için tüm kodlara sahiptir.

Hibrit çerçevenin tam resimsel temsili şöyle görünecektir:

HybridExecuteTest.java

paket testCases;java.io.IOException'ı içe aktarın;import java.util.Properties;içe aktarma işlemi.ReadObject;ithalat işlemi.UIOperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;excelExportAndFileIO.ReadGuru99ExcelFile dosyasını içe aktarın;public class HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String anahtar sözcüğü, String objectName, String objectType, String değeri) Exception {// TODO Otomatik oluşturulan yöntem saplamasıeğer (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = new FirefoxDriver ();}ReadObject nesnesi = new ReadObject ();Özellikler allObjects = object.getObjectRepository ();UIOperation işlemi = yeni UIOperation (webdriver);// UI üzerinde işlem gerçekleştirmek için perform işlevini çağırınoperation.perform (allObjects, anahtar sözcük, nesneAdı,objectType, değer);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () IOException {Nesne [] [] nesne = boş;ReadGuru99ExcelFile dosyası = yeni ReadGuru99ExcelFile ();// Anahtar kelime sayfasını okuyunSayfa guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Excel dosyasındaki satır sayısını bulint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];for (int i = 0; i 

Özet:

  • Selenium WebDriver kullanarak üç tür test çerçevesi oluşturabiliriz.
  • Bunlar Veriye Dayalı, Anahtar Kelime Odaklı ve Karma test çerçeveleridir.
  • TestNG'nin veri sağlayıcısını kullanarak Veri odaklı çerçeveye ulaşabiliriz.
  • Anahtar kelimeye dayalı çerçevede, anahtar kelimeler excel dosyası gibi bazı harici dosyalara yazılır ve java kodu bu dosyayı çağırır ve test durumlarını yürütür.
  • Karma çerçeve, anahtar kelimeye dayalı ve veriye dayalı çerçevenin bir karışımıdır.

Bu Öğreticide Demo için Selenium Proje Dosyalarını İndirin