data driven framework selenium webdriver using apache poi
Apache POI Kullanarak Selenium'da Veriye Dayalı Çerçeve üzerinde nasıl çalışılır?
Veriye Dayalı Çerçeve, mevcut pazardaki popüler Otomasyon Test Çerçevelerinden biridir. Veriye Dayalı otomatik test, test veri setinin excel sayfasında oluşturulduğu ve daha sonra test edilen yazılıma beslemek için otomasyon test araçlarına aktarıldığı bir yöntemdir.
Selenium Webdriver, web tabanlı uygulamaları otomatikleştirmek için harika bir araçtır. Ancak excel dosyalarında okuma ve yazma işlemlerini desteklemez.
Bu nedenle kullanıyoruz üçüncü taraf API'leri Apache POI gibi.
Bu eğitimde öğrenecekleriniz:
- Excel örneğini kullanan Selenium WebDriver'daki veri odaklı çerçeve nedir
- Apache POI kullanarak Selenium WebDriver'da excel sayfasından veri nasıl okunur ve yazılır
Ne öğreneceksin:
- Apache POI nedir?
- Neden veri sürücüsü testleri?
- Veriye Dayalı Çerçeveyi uygulamak için neye ihtiyacımız var?
- POI'de arayüz
- Selenium'u Apache POI ile kullanma adımları
- Veriye Dayalı Çerçeve kullanmanın avantajları
- Sonuç
- Önerilen Kaynaklar
Apache POI nedir?
Apache POI (Poor Obfuscation Implementation), okuma ve yazma işlemlerini - ofis dosyalarını değiştirme - desteklemek için Java'da yazılmış bir API'dir. Bu, aşağıdakiler için kullanılan en yaygın API'dir Selenyum veriye dayalı testler .
Veriye Dayalı Çerçeve uygulamanın birkaç yolu vardır ve her biri çerçeveyi ve bakımı geliştirmek için gereken çaba açısından farklılık gösterir.
POI kullanarak Selenium'da Veriye Dayalı çerçeve geliştirmek bakımın azaltılmasına, test kapsamının iyileştirilmesine ve böylece iyi bir yatırım getirisi sağlanmasına yardımcı olur.
Önerilen okumalar:
Neden veri sürücüsü testleri?
Çoğunlukla, bir uygulamanın bir özelliğini test etmek için kullanılması gereken birkaç veri seti olabilir. Şimdi aynı testi farklı verilerle manuel olarak çalıştırmak zaman alıcı, hataya açık ve sıkıcı bir iştir.
Bu senaryoyu bir örnekle anlayalım .
Giriş / Kayıt / Herhangi bir formu 100 farklı veri kümesiyle çoklu giriş alanlarıyla test etmemiz gerektiğini varsayalım.
Bunu test etmek için üç farklı yaklaşımınız vardır:
1) Her veri kümesi için 100 komut dosyası oluşturun ve her testi tek tek yürütün.
2) Koddaki verileri değiştirin ve birkaç kez çalıştırın.
3) Verileri excel sayfasından içe aktarın ve komut dosyasını farklı verilerle birden çok kez çalıştırın.
İlk iki senaryo zahmetli ve zaman alıcıdır - düşük yatırım getirisi anlamına gelir. Bu nedenle, üçüncü yaklaşımı takip etmeliyiz.
Üçüncü yaklaşımda, tüm verilerimizin uygulamanın özelliklerini test etmek için içe aktarıldığı ve kullanıldığı bir excel sayfasında bulunduğu Veriye Dayalı çerçeveyi uygulamaktır.
deneyimli için .net mülakat soruları ve cevapları
=> Veriye Dayalı Çerçeve hakkında daha fazla bilgi edinmek ister misiniz? Detaylı bir makaleyi buradan inceleyebilirsiniz .
Veriye Dayalı Çerçeveyi uygulamak için neye ihtiyacımız var?
Bu yaklaşımı takip etmek için Eclipse, TestNG uygun şekilde yapılandırılmış olmalıdır.
Bittiğinde şunlara bakacağız:
- Apache POI'sinin çeşitli arayüzleri.
- Apache POI'sinin Eclipse'e entegrasyonu.
- Excel Sayfasından Verileri Okuyun.
- Excel Sayfasına veri yazın.
- Apache POI'yi Selenium ile kullanmanın avantajları.
POI'de arayüz
En dikkat çekici özelliklerinden biri Apache POI hem .xls hem de .xslx dosyalarında okuma ve yazma işlemlerini desteklemesidir.
Aşağıda bahsedilenlerden bazıları POI arayüzleri .
- XSSFWorkbook: Xlsx dosyasındaki çalışma kitabını temsil eder.
- HSSFWorkbook: Xls dosyasındaki çalışma kitabını temsil eder.
- XSSFSheet: XLSX dosyasındaki bir sayfayı temsil eder.
- HSSFS sayfası: XLS dosyasındaki bir sayfayı temsil eder.
- XSSFRow: XLSX dosyası sayfasındaki bir satırı temsil eder.
- HSSFRow: XLS dosyası sayfasındaki bir satırı temsil eder.
- XSSFCell: XLSX dosyası satırındaki bir hücreyi temsil eder.
- HSSFCell: XLS dosyası satırındaki bir hücreyi temsil eder.
Hücrede bulunan alanlar:
- CELL_TYPE_BLANK: Boş bir hücreyi temsil eder.
- CELL_TYPE_BOOLEAN: Bir Boole hücresini (doğru veya yanlış) temsil eder.
- CELL_TYPE_ERROR: Bir hücredeki bir hata değerini temsil eder.
- CELL_TYPE_FORMULA: Hücredeki formül sonucunu temsil eder.
- CELL_TYPE_NUMERIC: Bir hücredeki sayısal verileri temsil eder.
- CELL_TYPE_STRING: Bir hücredeki dizeyi temsil eder.
Selenium'u Apache POI ile kullanma adımları
Web tabanlı uygulamaların oturum açma sürecini test etmek için bir otomasyon betiği oluşturalım.
Windows 10 için en iyi dvd şifre çözücü
Burada LinkedIn aldım Örnek olarak .
Verileri bir excel sayfasından içe aktarıyoruz ve daha sonra uygulamaya giriş yapmak için kullanıyoruz ve çalıştırdıktan sonra sonucu excel sayfasına yazıyoruz.
Çerçeveyi yürütme adımlarına devam etmek için sistemimizde aşağıdaki yazılıma ihtiyacımız var:
- Java JDK 1.7+
- Eclipse IDE
- TestNG
- Selenyum kavanozları
- Microsoft Office / Açık Ofis
Aşama 1)
Öncelikle Eclipse'i şu şekilde yapılandırmamız gerekiyor: Apache POI .
İndir Apache POI için jar dosyaları.
Adım 2)
Jar dosyasını açın ve aşağıdaki kavanozları projenize ekleyin ve yapılandırın.
- dom4j-1.6.1.jar
- poi-3.10-FINAL-20140208.jar
- poi-ooxml-3.10-FINAL-20140208.jar
- poi-ooxml-schemas-3.10-FINAL-20140208.jar
- xmlbeans-2.3.0.jar
Aşama 3)
İlgili kavanozları yapılandırdıktan sonra, bir excel sayfası oluşturun ve içine bazı verileri girin ve TestData.xlsx tercih ettiğiniz yerde.
Adım 4)
Şimdi excel sayfasından verileri okumak için örnek kodu takip edelim ve giriş yapmak için kullanalım. linkedin.com .
package automationFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** * @author Admin * */ public class ReadWriteExcel { WebDriver driver; WebDriverWait wait; HSSFWorkbook workbook; HSSFSheet sheet; HSSFCell cell; @BeforeTest public void TestSetup() { // Set the path of the Firefox driver. System.setProperty('webdriver.gecko.driver', 'C:\Users\geckodriver.exe'); driver = new FirefoxDriver(); // Enter url. driver.get('http://www.linkedin.com/'); driver.manage().window().maximize(); wait = new WebDriverWait(driver,30); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } @Test public void ReadData() throws IOException { // Import excel sheet. File src=new File('C:\Users\Admin\Desktop\TestData.xls'); // Load the file. FileInputStream finput = new FileInputStream(src); // Load he workbook. workbook = new HSSFWorkbook(finput); // Load the sheet in which data is stored. sheet= workbook.getSheetAt(0); for(int i=1; i<=sheet.getLastRowNum(); i++) { // Import data for Email. cell = sheet.getRow(i).getCell(1); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-email')).sendKeys(cell.getStringCellValue()); // Import data for password. cell = sheet.getRow(i).getCell(2); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-password')).sendKeys(cell.getStringCellValue()); } } }
Adım 5)
Test senaryosu sınıfına sağ tıklayın ve tıklayın Farklı çalıştır -> TestNG Testi.
Apache POI Excel sayfasından veri alır ve bunu uygulamamızda oturum açmak için kullanır. Artık excel sayfasından verileri nasıl okuyacağımızı gördük, şimdi sayfaya nasıl yazılacağına bakalım.
package automationFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** * @author Admin * */ public class ReadWriteExcel { WebDriver driver; WebDriverWait wait; HSSFWorkbook workbook; HSSFSheet sheet; HSSFCell cell; @BeforeTest public void TestSetup() { // Set the path of the Firefox driver. System.setProperty('webdriver.gecko.driver', 'C:\Users\geckodriver.exe'); driver = new FirefoxDriver(); // Enter url. driver.get('http://www.linkedin.com/'); driver.manage().window().maximize(); wait = new WebDriverWait(driver,30); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } @Test public void ReadData() throws IOException { // Import excel sheet. File src=new File('C:\Users\Admin\Desktop\TestData.xls'); // Load the file. FileInputStream finput = new FileInputStream(src); // Load he workbook. workbook = new HSSFWorkbook(finput); // Load the sheet in which data is stored. sheet= workbook.getSheetAt(0); for(int i=1; i<=sheet.getLastRowNum(); i++) { // Import data for Email. cell = sheet.getRow(i).getCell(1); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-email')).sendKeys(cell.getStringCellValue()); // Import data for password. cell = sheet.getRow(i).getCell(2); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-password')).sendKeys(cell.getStringCellValue()); // Write data in the excel. FileOutputStream foutput=new FileOutputStream(src); // Specify the message needs to be written. String message = 'Data Imported Successfully.'; // Create cell where data needs to be written. sheet.getRow(i).createCell(3).setCellValue(message); // Specify the file in which data needs to be written. FileOutputStream fileOutput = new FileOutputStream(src); // finally write content workbook.write(fileOutput); // close the file fileOutput.close(); } } }
Not : Bu işlem sırasında herhangi bir sorunla karşılaşırsanız, lütfen aşağıdaki noktaları kontrol edin.
- Belirtilen tüm kavanozların projeye eklendiğinden ve doğru şekilde yapılandırıldığından emin olun.
- Gerekli yazılım doğru bir şekilde kuruldu.
- .Xls için HSSF ve .xlsx için XSSF gibi excel dosyasına göre bir arayüzün doğru kullanımı.
- Geçerli satır ve sütun dizini kullanılır.
- Excel dosyası çalıştırılmadan önce kapatılmalıdır.
- .Xlsx dosyaları için kullanılan XSSF ve .xls dosyaları için kullanılan HSSF gibi excel dosyası için kullanılan uygun sınıflar.
Veriye Dayalı Çerçeve kullanmanın avantajları
- Test kapsamını iyileştirir.
- Kodun yeniden kullanılabilirliği.
- Daha az bakım.
- Daha Hızlı Yürütme.
- Daha iyi hata işlemeye izin verir.
Sonuç
Bir dosyaya giriş / çıkış, yazılım test sürecinin çok kritik bir parçasıdır. Apache POI Selenium Test Otomasyonu için bunu mümkün kılmada hayati bir rol oynar.
Selenyum ile entegre Apache POI betiğinizi farklı veri kümeleriyle birden çok kez çalıştırmanızı ve tüm verilerin tek bir yerde tutulmasını kolaylaştırır. Test komut dosyası üzerinde zaman ve bakım çabasından tasarruf sağlar.
Hakkında yazar: Bu, bir QA Otomasyon Mühendisi olan Vivek'in konuk gönderisidir.
Apache POI kullanarak Selenium WebDriver'da veriye dayalı test çerçevesini uygulamaya yönelik herhangi bir sorunuz var mı? Aşağıdaki yorumlarda bize bildirin.
Önerilen Kaynaklar
- Selenium Framework Oluşturma ve Excel'den Test Verilerine Erişme - Selenium Tutorial # 21
- Spock Framework ile Veriye Dayalı veya Parametreli Test
- Veriye Dayalı Test Nasıl Çalışır (QTP ve Selenyum Örnekleri)
- JUnit Framework'e Giriş ve Selenium Script'te Kullanımı - Selenium Tutorial # 11
- TestComplete Aracı Kullanılarak Veriye Dayalı Test Nasıl Gerçekleştirilir
- QTP Eğitimi # 18 - QTP Örnekleriyle Açıklanan Veriye Dayalı ve Karma Çerçeveler
- Selenium Komut Dosyaları Oluşturmak için TestNG Framework Nasıl Kullanılır - TestNG Selenium Tutorial # 12
- SoapUI Pro'da Veriye Dayalı Test Nasıl Gerçekleştirilir - SoapUI Eğitimi # 14