オブジェクトリポジトリ Selenium
⚡ スマートサマリー
オブジェクトリポジトリ Selenium 要素ロケーターを単一の外部ファイルに集約し、テストスクリプトから分離します。このアプローチにより、メンテナンス性が向上し、テスターは多数のテストケースを編集するのではなく、1か所でロケーターを更新できるようになります。

オブジェクト リポジトリとは何ですか?
オブジェクト リポジトリは、すべてのオブジェクトの共通の保存場所です。で Selenium WebDriver コンテキストでは、オブジェクトは通常、Web 要素を一意に識別するために使用されるロケーターになります。
オブジェクトリポジトリを使用する最大の利点は、オブジェクトとテストケースを分離できることです。あるWeb要素のロケーター値が変更された場合、そのロケーターが使用されているすべてのテストケースを変更するのではなく、オブジェクトリポジトリのみを変更すれば済みます。オブジェクトリポジトリを維持することで、フレームワーク実装のモジュール性が向上します。
オブジェクト リポジトリの種類 Selenium ウェブドライバー
Selenium WebDriverには、デフォルトでは組み込みのオブジェクトリポジトリは提供されていません。ただし、キーと値のペア方式を使用してオブジェクトリポジトリを構築できます。この場合、キーはオブジェクトに付けられた名前を指し、値はWebページ内でオブジェクトを一意に識別するために使用されるプロパティを指します。
作成できるオブジェクトリポジトリの種類は次のとおりです。 Selenium ウェブドライバー。
- プロパティファイルを使用したオブジェクトリポジトリ
- XMLファイルを使用したオブジェクトリポジトリ
Selenium プロパティ ファイルを使用した Web ドライバー オブジェクト リポジトリ
この方式では、プロパティファイルはテキストファイルであり、データはキーと値のペアの形式で格納されます。以下のチュートリアルでは、次のトピックについて説明します。
ステップ1) Eclipseでプロパティファイルを作成する
- まず、Eclipseで以下のJavaプロジェクト構造を作成する必要があります。プロジェクト名とパッケージ名は、有効な名前であれば何でも構いません。
- メインプロジェクトフォルダを右クリックして、「新規」→「その他」を選択します。
- 次のウィンドウで、[一般] -> [ファイル] を選択し、[次へ] ボタンをクリックします。
- 新しいファイルリソースウィンドウで拡張子「.properties」の有効なファイル名を入力し、「完了」ボタンをクリックします。
- プロジェクト構造には「application.properties」という名前のファイルが表示される必要があります。
ステップ 2) データをプロパティ ファイルに保存する
- データはプロパティファイルにキーと値のペアの形式で保存され、キーはファイル全体で一意である。
- プロパティファイルを使用して、ロケーター値からWeb要素を識別してみます。
- application.properties ファイルを開く Eclipse 以下のデータを保存します
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit
4) このチュートリアルでは、次のデモ Web サイトを使用します。
https://demo.guru99.com/test/guru99home/テストシナリオは以下のとおりです。
- XPATHを使用してモバイルテストのリンクをクリックします。
- 戻る
- IDを使用してメールテキストボックスにデータを入力してください
- IDを使用して「サインアップ」ボタンをクリックします
ステップ 3) プロパティファイルからデータを読み取る
- プロパティファイルからデータを読み込むには、java.utilパッケージに用意されている組み込みのPropertiesクラスを使用できます。
- まず、以下のようにPropertiesクラスのオブジェクトを作成する必要があります。
Properties obj = new Properties();
- プロパティファイルへのパスを指定して、FileInputStreamクラスのオブジェクトを作成する必要があります。
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- JavaのPropertiesクラスが提供するloadメソッドを使用すると、プロパティファイルからデータを読み込むことができます。以下のコードは、loadメソッドの使用例を示しています。
Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties"); obj.load(objfile); String mobileTesting = obj.getProperty("MobileTesting");
文字列「mobileTesting」には、Web ページ内のモバイル テスト リンクを識別するための XPATH が含まれます。
ステップ 4) テスト スクリプトでプロパティ ファイルを使用する
プロパティファイルは、テストスクリプト内で、プロパティファイルからデータを読み込み、そのデータをfindElementメソッドのパラメータとして渡すことで使用できます。以下のコードは、テストスクリプト内でプロパティファイルから読み込んだデータを使用する方法を示しています。
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();
以下は、上記のテスト シナリオで使用される完全なコードです。
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); // Navigate 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 ファイルを使用した WebDriver オブジェクト リポジトリ
XMLはExtensible Markup Languageの略です。XMLファイルは、基本構造としてDocument Object Model(DOM)を使用します。XMLファイル形式は、ウェブページが構築されるHTML形式を再現します。以下に、取り上げるトピックの一覧を示します。
ステップ1) EclipseでXMLファイルを作成する
- 以下の Java プロジェクト構造を次の場所に作成する必要があります。 Eclipse.
- プロジェクトフォルダーを右クリックし、「新規」→「その他」を選択します。
- XMLフォルダ内のXMLファイルを選択し、「次へ」ボタンをクリックします。
- 有効なXMLファイル名を入力し、「完了」ボタンをクリックしてください。
- 以下に示すように、XML ファイルがプロジェクト フォルダーに追加されます。
ステップ 2) データを XML ファイルに保存する
データは、ドキュメントオブジェクトモデル(DOM)の形式でXMLファイルに保存できます。分かりやすくするために、以下のテストシナリオを例として使用します。
- XPATHを使用してモバイルテストのリンクをクリックします。
- ホームページに戻る
- IDを使用してメールテキストボックスにデータを入力してください
- IDを使用して「サインアップ」ボタンをクリックします
使用するXMLファイルのフォーマットは以下のとおりです。
<menu> <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting> <email> philadelphia-field-email</email> <signup> philadelphia-field-submit </signup> </menu>
上記のXMLコードをproperties.xmlに保存します。
「デザイン」タブには次のように表示されます。
ステップ 3) XML ファイルからデータを読み取る
1. XMLファイルからのデータ読み込みは、Javaの組み込みクラス「dom4j」を使用して行うことができます。コードを実行する前に、以下のJARファイルをプロジェクトのビルドパスに追加する必要があることに注意してください。
- jaxen.jar
- dom4j-1.6.jar
2. 以下は、XMLファイルからデータを読み込むためのコードです。
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. まず、File オブジェクトを作成し、それを SAXReader クラスの 'read' メソッドのパラメータとして渡します。XML ファイルのデータが正常に読み込まれたら、'selectSingleNode' メソッドを使用して XML ドキュメントの個々のノードにアクセスできます。
ステップ 4) テスト スクリプトで XML ファイルを使用する
XMLファイルは、テストスクリプト内でデータ読み込みを行い、そのデータをfindElementメソッドのパラメータとして渡すことで使用できます。以下のコードは、テストスクリプト内でXMLファイルから読み取ったデータを使用する方法を示しています。
driver.findElement(By.xpath(mobileTesting)).click(); driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click();
以下のコードは、Selenium WebDriverでXMLファイルを使用する方法を示しています。
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ドライバーをダウンロードする Eclipse プロジェクト













