keyword driven framework selenium with examples
キーワード駆動型フレームワークに関するこの包括的なチュートリアルでは、フレームワークのさまざまなコンポーネントと、Seleniumでフレームワークを作成する方法について説明します。
一般に、フレームワークは一連のガイドラインであり、従うと有益な結果が得られます。
Javaでリストをインスタンス化する方法
キーワード駆動型フレームワークは、スクリプトで使用されるキーワード/アクションを別のオブジェクトリポジトリ(ここではJavaクラスファイル)で外部化する手法であり、コードの再利用性の向上、スクリプトのメンテナンスの削減などの良い結果をもたらします。そしてより高い携帯性。
=> ここでSeleniumビギナーズガイドをご覧ください。
学習内容:
Seleniumのキーワード駆動型フレームワークとは何ですか?
ビデオチュートリアルは次のとおりです。
キーワード駆動型フレームワーク–計画と設計
キーワード駆動型フレームワークパートの作成– I
キーワード駆動型フレームワークの作成パート– II
キーワード駆動型テストフレームワークのコンポーネント
以下に、キーワード駆動型フレームワークに関係するコンポーネントのリストを示します。
- 関数ライブラリ
- キーワードを保存するExcelシート
- デザインテストケーステンプレート
- 要素/ロケーターのオブジェクトリポジトリ
- テストスクリプトまたはドライバースクリプト
#1)関数ライブラリ
これは通常、キーワードが定義されているJavaクラスファイルです。つまり、アプリケーションで実行されるすべてのアクションは、ライブラリクラスファイルでユーザー定義のメソッド(キーワード)として定義されます。
例えば:
アプリケーションが1つ以上のテストケースで次のアクションを実行する必要があると仮定します。
- URLを入力します。
- 要素をクリックします。
- テキストボックスに入力します。
次に、 ライブラリファイルは、以下に示すように、これらすべてのアクションに対して個別のメソッドを定義することによって作成されます。
ここでは、アクションのユーザー定義メソッド「EnterURL」を作成しています。
ユーザー定義メソッドに付けられた名前は、 キーワード。
したがって、ここで「enter_URL」はキーワードです
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
パラメーター :
運転者 –ドライバーはメインクラスで初期化され、ここに渡されます。
テストデータ –メインクラスによって外部ソースから読み取られ、ここに渡されます。
関数 :
ここに、 driver.get() –は、「URLの入力」アクションを実行するSeleniumの機能です。
キーワード.java
package Keywords.Defined; import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; // driver object is declared //method for entering URL – Keyword is ‘enter_URL’ public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); } //method for typing action – Keyword is ‘type’ public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) { driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); } //method for click action – Keyword is ‘click’ public void click(WebDriver driver,String ObjectName, String locatorType) { driver.findElement(this.getObject(ObjectName,locatorType)).click(); } }
#2)キーワードを保存するExcelシート
ユーザーがライブラリファイルに保持されているキーワードを理解できるように、すべてのユーザー定義メソッドとその機能の詳細をExcelシートに記載する必要があります。
Excelシートは、ライブラリファイルの概要として機能し、テストケーステンプレートを作成するときに役立ちます。ユーザーは、Excelシートのキーワードリストを見て、テストケースの各アクションに対応するキーワードを選択します。
例えば:
package Keywords.Defined; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; public void enter_URL(WebDriver driver,String TestData) throws IOException{ driver.get(TestData); } public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); //driver.findElement(By.xpath('//')).sendKeys(testdata); } public void wait(WebDriver driver,String ObjectName, String locatorType) throws IOException{ WebDriverWait wait = new WebDriverWait(driver, 60); wait.until(ExpectedConditions.visibilityOf(driver.findElement(this.getObject(ObjectName,locatorType)))); } public void click(WebDriver driver,String ObjectName, String locatorType) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).click(); } public String get_currentURL(WebDriver driver){ String URL = driver.getCurrentUrl(); System.out.println('print URL '+URL); return URL; } By getObject(String ObjectName, String locatorType) throws IOException{ File file = new File(path+'\Externals\Object Repository.properties'); FileInputStream fileInput = new FileInputStream(file); Properties prop = new Properties(); //find by xpath if(locatorType.equalsIgnoreCase('XPATH')){ return By.xpath(prop.getProperty(ObjectName)); } //find by class else if(locatorType.equalsIgnoreCase('CLASSNAME')){ return By.className(prop.getProperty(ObjectName)); } //find by name else if(locatorType.equalsIgnoreCase('NAME')){ return By.name(prop.getProperty(ObjectName)); } //Find by css else if(locatorType.equalsIgnoreCase('CSS')){ return By.cssSelector(prop.getProperty(ObjectName)); } //find by link else if(locatorType.equalsIgnoreCase('LINK')){ return By.linkText(prop.getProperty(ObjectName)); } //find by partial link else if(locatorType.equalsIgnoreCase('PARTIALLINK')){ return By.partialLinkText(prop.getProperty(ObjectName)); } return null; } }
#3)テストケーステンプレートの設計
テストケーステンプレートは、プロジェクトの都合に合わせて作成できます。テンプレートを作成するための特別なルールはありません。これは、プロジェクトが外部化するためにフレームワークを必要とする量に応じて設計されています。外部化はキーワードのみの場合もあれば、テストデータやUI要素も外部化される場合もあります。
サンプルテストケーステンプレートが作成されます。
与えられた例では、テンプレートは次のように作成されます。
- 各シートはテストケースに対応し、最後のシートは「キーワードリスト」を保持するシートです。
- 各行は、TCのテストステップに対応しています。
- 各列は、各アクションに必要なパラメーターです。
テストケーステンプレートの記入方法:
#1) 提供されたテストケースシートから、各テストケースとそれに対応するテストステップをお読みください。テストステップごとに、アクションを見つけて、ライブラリファイルから対応するキーワードを見つけます。
#二) アクションがキーワードと一致したら、テストケーステンプレートをテストケースの順序で入力し、必要に応じて他の必要なパラメーターも渡します。
#4)ロケーターのオブジェクトリポジトリ
UIロケーターを識別し、その値をテストケーステンプレートに記載するか、別のオブジェクトリポジトリに保持することができます。
以下の例では、要素識別プロパティ
- ロケータータイプ –使用される識別手法は、id、Xpath、ClassNameなどです。
- ロケーター値 –その属性の値– 例えば: そのId属性の場合、idの値など。
もう1つの方法は、オブジェクトリポジトリを維持し、Excelシートにオブジェクト名を記載することです。
- ロケータータイプ –使用される識別手法は、id、Xpath、ClassNameなどです。
- ロケーター名 –ロケーター値が格納されているオブジェクトリポジトリからのオブジェクトの名前。 例えば、 リポジトリがObjectNameが「Username」である要素のXpath値を保持している場合、LocatorNameは「UserName」として示されます。
注意: Excelシートに記載されているLocatorTypeによると、その値はオブジェクトリポジトリに保存する必要があります。 例えば: XpathがLocatorTypeとして指定されている場合、リポジトリはその要素のXpathを格納する必要があり、idがLocatortypeとして指定されている場合、idは格納される必要があります。
#5)テストスクリプトまたはドライバースクリプト
これは、Excelシートのすべての内容を読み取り、対応するアクションを実行するメインスクリプトです。スクリプトは、テンプレートの作成方法に基づいて設計されています。
この場合、各テストシートがテストケースとして機能し、各行がテストステップとして機能するため、シートと行を繰り返し処理することでドライバースクリプトを作成できます。
特定の各行で、キーワードが読み取られ、ライブラリファイル内の対応するメソッドが実行されます。これは、テストケースのすべてのテストステップが実行されるまで続きます。次に、次のテストケース/シートに進み、実行します。
package Automation.KeywordFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.LinkedList; import java.util.Properties; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Reporter; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import org.testng.asserts.Assertion; import Keywords.Defined.Assertions; import Keywords.Defined.Keywords; public class IrctcLogic { WebDriver driver; String path = System.getProperty('user.dir'); Keywords keyword = new Keywords(); Assertions assertion = new Assertions(); @Test public void readExcelandexecute() throws IOException, InterruptedException{ //From excelfile String excelFilePath = path+'\Externals\Test Cases.xlsx'; FileInputStream fileInputStream = new FileInputStream(excelFilePath); XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); int testcasescount = workbook.getNumberOfSheets()-1; System.out.println('Total test cases :'+testcasescount); for (int testcase=0;testcase結論
したがって、フレームワークが作成されると、複数のテストケース/プロジェクトで再利用できます。このようにして、プロジェクトごとに自動化スクリプトを作成する工数を削減します。
次の章では、キーワード駆動型フレームワークとデータ駆動型フレームワークを組み合わせたハイブリッド駆動型フレームワークの作成について説明します。
=> EasySeleniumトレーニングシリーズをお読みください。
推奨読書
- ApachePOIを使用したSeleniumWebDriverのデータ駆動型フレームワーク
- データ駆動型テストのしくみ(QTPとSeleniumの例)
- JUnitフレームワークの概要とSeleniumスクリプトでのその使用法– Seleniumチュートリアル#11
- Seleniumのハイブリッドフレームワークとは何ですか?
- Seleniumは例を含むテキストチュートリアルで要素を検索します
- 30以上の最高のSeleniumチュートリアル:実際の例でSeleniumを学ぶ
- Seleniumフレームワークの作成とExcelからのテストデータへのアクセス-Seleniumチュートリアル#21
- Java'this 'キーワード:コード例を含むチュートリアル