data driven framework selenium webdriver using apache poi
Apache POIを使用してSeleniumでデータ駆動型フレームワークを操作する方法は?
データ駆動型フレームワークは、現在の市場で人気のある自動化テストフレームワークの1つです。データ駆動型自動テストは、テストデータセットがExcelシートで作成され、自動化テストツールにインポートされて、テスト対象のソフトウェアにフィードされる方法です。
Selenium Webdriverは、Webベースのアプリケーションを自動化するための優れたツールです。ただし、Excelファイルの読み取りおよび書き込み操作はサポートされていません。
したがって、 サードパーティのAPI ApachePOIのように。
このチュートリアルで学ぶこと:
- Excelの例を使用したSeleniumWebDriverのデータ駆動型フレームワークとは
- ApachePOIを使用してSeleniumWebDriverのExcelシートからデータを読み書きする方法
学習内容:
- Apache POIとは何ですか?
- なぜデータドライブテスト?
- データ駆動型フレームワークを実装するには何が必要ですか?
- POIのインターフェース
- ApachePOIでSeleniumを使用する手順
- データ駆動型フレームワークを使用する利点
- 結論
- 推奨読書
Apache POIとは何ですか?
Apache POI(Poor Obfuscation Implementation)は、Javaで記述されたAPIであり、読み取りおよび書き込み操作(Officeファイルの変更)をサポートします。これは、に使用される最も一般的なAPIです。 Seleniumデータ駆動型テスト 。
データ駆動型フレームワークを実装する方法はいくつかあります 、およびフレームワークとメンテナンスの開発に必要な作業はそれぞれ異なります。
POIを使用してSeleniumでデータ駆動型フレームワークを開発すると、メンテナンスが削減され、テストカバレッジが向上するため、優れた投資収益率が得られます。
推奨される読み物:
なぜデータドライブテスト?
多くの場合、アプリケーションの機能をテストするために使用する必要のあるデータセットが多数ある場合があります。現在、異なるデータを使用して同じテストを手動で実行することは、時間がかかり、エラーが発生しやすく、退屈な作業です。
例を挙げてこのシナリオを理解しましょう 。
ログイン/登録/ 100の異なるデータセットを持つ複数の入力フィールドを持つ任意のフォームをテストする必要があるとします。
これをテストするには、3つの異なるアプローチがあります。
1) データセットごとに100個のスクリプトを作成し、各テストを1つずつ実行します。
2) スクリプト内のデータを変更し、複数回実行します。
3) Excelシートからデータをインポートし、異なるデータを使用してスクリプトを複数回実行します。
最初の2つのシナリオは、手間と時間がかかり、ROIが低いことを意味します。したがって、3番目のアプローチに従う必要があります。
3番目のアプローチでは、データ駆動型フレームワークを実装します。このフレームワークでは、すべてのデータがExcelシートに格納され、アプリケーションの機能をテストするためにインポートされ、使用されます。
=>データドリブンフレームワークについてもっと知りたいですか?詳細があります こちらで確認できる記事 。
データ駆動型フレームワークを実装するには何が必要ですか?
このアプローチに従うには、Eclipse、TestNGを適切に構成する必要があります。
完了したら、以下を確認します。
- ApachePOIのさまざまなインターフェース。
- EclipseへのApachePOIの統合。
- Excelシートからデータを読み取ります。
- Excelシートにデータを書き込みます。
- SeleniumでApachePOIを使用する利点。
POIのインターフェース
の最も注目すべき機能の1つ Apache POI .xlsファイルと.xslxファイルの両方で読み取りおよび書き込み操作をサポートするということです。
以下にいくつかあります POIのインターフェース 。
- XSSFWorkbook: xlsxファイルのワークブックを表します。
- HSSFWorkbook: xlsファイルのワークブックを表します。
- XSSFSheet: XLSXファイルのシートを表します。
- HSSFシート: XLSファイルのシートを表します。
- XSSFRow: XLSXファイルのシートの行を表します。
- HSSFRow: XLSファイルのシートの行を表します。
- XSSFCell: XLSXファイルの行のセルを表します。
- HSSFCell: XLSファイルの行のセルを表します。
セルで使用可能なフィールド:
- CELL_TYPE_BLANK: 空白のセルを表します。
- CELL_TYPE_BOOLEAN: ブールセル(trueまたはfalse)を表します。
- CELL_TYPE_ERROR: セル内のエラー値を表します。
- CELL_TYPE_FORMULA: セルの数式結果を表します。
- CELL_TYPE_NUMERIC: セル内の数値データを表します。
- CELL_TYPE_STRING: セル内の文字列を表します。
ApachePOIでSeleniumを使用する手順
Webベースのアプリケーションのログインプロセスをテストするための自動化スクリプトを作成しましょう。
ここで、LinkedInを利用しました 例として 。
エクセルシートからデータをインポートし、それを使用してアプリケーションにログインし、実行後、結果をエクセルシートに書き込みます。
フレームワークを実行する手順を実行するには、システムに次のソフトウェアをインストールする必要があります。
- Java JDK 1.7+
- Eclipse IDE
- TestNG
- セレンジャー
- Microsoft Office / Open Office
ステップ1)
まず、Eclipseを構成する必要があります Apache POI 。
ダウンロード ApachePOIのjarファイル。
ステップ2)
jarファイルを解凍し、次のjarをプロジェクトに追加して構成します。
- 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
ステップ3)
それぞれのjarファイルを構成した後、Excelシートを作成し、データを入力して名前を付けて保存します。 TestData.xlsx ご希望の場所で。
最高のメールアカウントは何ですか

ステップ4)
次に、サンプルコードに従って、Excelシートからデータを読み取り、それを使用してログインします。 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()); } } } ステップ5)
テストケースクラスを右クリックし、をクリックします として実行–> TestNGテスト。
Apache POI Excelシートからデータをインポートし、それを使用してアプリケーションにログインします。 Excelシートからデータを読み取る方法を確認したので、シートへの書き込み方法を見てみましょう。
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(); } } } 注意 : この過程で問題が発生した場合は、以下の点をご確認ください。
- 上記のすべてのjarがプロジェクトに追加され、適切に構成されていることを確認してください。
- 必要なソフトウェアが正しくインストールされています。
- .xlsのHSSFや.xlsxのXSSFなど、Excelファイルに関するインターフェイスの適切な使用。
- 有効な行と列のインデックスが使用されます。
- Excelファイルは実行前に閉じる必要があります。
- .xlsxファイルに使用されるXSSFや.xlsファイルに使用されるHSSFなどのExcelファイルに使用される適切なクラス。
データ駆動型フレームワークを使用する利点
- テストカバレッジを改善します。
- コードの再利用性。
- メンテナンスが少なくて済みます。
- より高速な実行。
- より良いエラー処理を可能にします。
結論
ファイルとの間の入出力は、ソフトウェアテストプロセスの非常に重要な部分です。 Apache POI Selenium TestAutomationでこれを可能にする上で重要な役割を果たします。
と統合されたセレン Apache POI すべてのデータを1つの場所に保持しながら、さまざまなデータセットを使用してスクリプトを複数回実行するのが容易になります。これにより、テストスクリプトの時間とメンテナンスの労力が節約されます。
関して 著者: これは、QAオートメーションエンジニアであるVivekによるゲスト投稿です。
ApachePOIを使用してSeleniumWebDriverにデータ駆動型テストフレームワークを実装するクエリはありますか?以下のコメントでお知らせください。
推奨読書
- Seleniumフレームワークの作成とExcelからのテストデータへのアクセス-Seleniumチュートリアル#21
- SpockFrameworkを使用したデータ駆動型またはパラメーター化されたテスト
- データ駆動型テストのしくみ(QTPとSeleniumの例)
- JUnitフレームワークの概要とSeleniumスクリプトでのその使用法– Seleniumチュートリアル#11
- TestCompleteツールを使用してデータ駆動型テストを実行する方法
- QTPチュートリアル#18 –QTPの例で説明されたデータ駆動型およびハイブリッドフレームワーク
- Seleniumスクリプトを作成するためのTestNGフレームワークの使用方法-TestNGSeleniumチュートリアル#12
- SoapUI Proでデータ駆動型テストを実行する方法– SoapUIチュートリアル#14