Selenium Cucumber (BDD フレームワーク チュートリアル)
⚡ スマートサマリー
Selenium Cucumber 平易な英語のガーキン構文と強力なビヘイビア駆動開発(BDD)フレームワークを組み合わせた Selenium WebDriverによる自動化。このチュートリアルでは、前提条件を説明し、3つの実践的なシナリオを通して、フィーチャーファイル、ステップ定義、およびTestRunnerクラスがどのように連携してブラウザテストを実行するかを示します。

このチュートリアルでは、統合する方法を学びます Cucumber Selenium WebDriverを使用して、読みやすく、保守しやすく、データ駆動型のビヘイビア駆動開発(BDD)フレームワークを構築します。
何ですか Cucumber?
Cucumber は、ビヘイビア駆動開発(BDD)をサポートするテストツールです。アプリケーションの動作をGherkin言語を使用してシンプルな英語のテキストで記述するため、プログラミング言語を習得しなくても、開発者以外の人がテスト仕様に貢献できます。詳細については、こちらをご覧ください。 Cucumber チュートリアル.
何ですか Selenium?
Selenium は、自動化ツールとして使用されます。 機能テスト ウェブベースのアプリケーションについて。 Selenium 複数のプログラミング言語をサポートしており、 Javaルビー、 Pythonまた、C#にも対応しているため、様々な技術的バックグラウンドを持つチームに最適です。詳しくは、 Selenium チュートリアル.
なぜ使うの? Cucumber Selenium?
Cucumber (NAIST) と Selenium これらは最も広く採用されているテスト技術の2つです。ほとんどの組織はすでにこれらを使用しています。 Selenium 機能テストのためにレイヤー化したい Cucumber トップに立つのは Cucumber アプリケーションの流れを読みやすく理解しやすくする.
Cucumber これは、ビヘイビア駆動開発フレームワークに基づいています。 橋渡し役を果たす 以下の役割間で:
- ソフトウェアエンジニア兼ビジネスアナリスト。
- 手動テスターと自動テスター。
- マニュアルテスターと開発者。
その Cucumber BDDフレームワークも クライアントがアプリケーションコードを理解するのに役立ちます なぜなら、このソフトウェアはプレーンテキストで記述されたGherkin言語を使用しているからです。組織内の誰もがソフトウェアの動作を理解できます。Gherkinの構文はシンプルで読みやすい英語で書かれているため、技術的な知識のない読者でも仕様書を理解できます。
使用の前提条件 Cucumber Selenium
始める前に Cucumber-Selenium 統合するには、以下のアイテムが必要です。
Selenium jar ファイル:
- Selenium-サーバー-スタンドアロン
ダウンロードはこちらから https://www.selenium.dev/downloads/.
JARファイル Cucumber:
- Cucumber- コア
- Cucumber-html
- Cobertura コードカバレッジ
- Cucumber-ジャバ
- Cucumber-ジュニット
- Cucumber-jvm-deps
- Cucumber-報告
- ハムクレストコア
- ガーキン
- JUnit
ダウンロードはこちらから https://mvnrepository.com/search?q=Cucumber各jarファイルを検索し、一つずつダウンロードする必要があります。
例えば、jar ファイルの 1 つをダウンロードする方法は次のとおりです。「Cucumber-core」ライブラリ。
上記のダウンロードリンクをクリックしてください。Mavenリポジトリサイトにリダイレクトされます。次に、特定のjarファイル(この場合は「Cucumber 以下のスクリーンショットに示すように、コア)
次のページで、バージョン1.2.2をクリックしてください。
次の画面で「ダウンロード」をクリックして、 Cucumber コアjarファイル:
注意: 利便性を考慮し、必要なMaven jarファイルを同梱しました。 こちらこれらのjarファイルは時間の経過とともに古くなり、互換性がなくなる可能性があるため、上記の方法を使用してご自身でダウンロードすることをお勧めします。
自動テストの使用 Cucumber Selenium
使い方を順を追って説明しましょう Cucumber Selenium 段階的に説明します。ここでは、次の3つのシナリオを取り上げます。
- シナリオ 1: コンソールにテキストを出力します。
- シナリオ2:ログイン認証情報を入力して値をリセットします。
- シナリオ 3: ログイン資格情報を入力してください Guru99と値をリセットする。これを3セットのデータに対して繰り返す。
シナリオ1:コンソールにテキストを出力する
このシナリオでは、コンソールにテキストを単純に出力します。 Cucumber.
ステップ1) プロジェクトを作成する Eclipse.
作る Java 名前のプロジェクト Cucumber自律的AISelenium 下のスクリーンショットに示すように
ステップ2) プロジェクトにjarファイルを追加します。
プロジェクトを右クリック > プロパティ > Java ビルドパス。以前ダウンロードしたすべてのライブラリを追加します。
ステップ3) フィーチャーファイルを作成します。
フィーチャーファイルを作成するには、まず以下のスクリーンショットに示すようにFeaturesフォルダーを作成します。
フォルダー名に「Features」と入力し、「完了」をクリックします。
次に、Features フォルダー内にフィーチャー ファイルを作成します。 MyTest.featureその手順は、フォルダを作成する手順と似ています。
注意: インストールする必要がある場合があります Cucumber Eclipse まずプラグインしてください。ヘルプ → 新規ソフトウェアのインストールに進み、リンクを貼り付けてください。 http://cucumber.github.io/cucumber-eclipse/update-site/、インストールします。
ステップ4) シナリオを記述してください。
以下の行は MyTest.feature Gherkin言語を使用する:
Feature: Reset functionality on login page of Application
Scenario: Verification of Reset button
Given Open the Firefox and launch the application
When Enter the Username and Password
Then Reset the credential
Code 説明
1行目) ビジネス機能を定義します。
2行目) テストするシナリオを定義します。
3行目) 前提条件(既知)を定義します。
4行目) 実行するアクションを定義します(いつ)。
5行目) 期待される結果または成果を定義します(その後)。
ステップ5) 書きます Selenium TestRunner スクリプト Cucumber フレームワーク設計。
作る テストランナー パッケージと Runner.java その下のクラスファイル。
package TestRunner;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "Features", glue = {"StepDefinition"})
public class Runner
{
}
上記で Cucumber Java 例えば、 キュウリのテスト 次の注釈を使用します。
@RunWith() 伝える JUnit テストの実行を開始するテストランナークラスについて説明します。
@Cucumberオプション() フィーチャーファイルパスやステップ定義グルーパッケージなどのテストプロパティを設定します。
TestRunnerファイルのスクリーンショット:
ステップ6) ステップ定義スクリプトを作成します。
今作成します ステップ定義 パッケージと Steps.java その下のスクリプトファイル。Steps.java の中に、 Selenium 各Gherkinステップに対応するロジック。
package StepDefinition;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class Steps {
@Given("^Open the Firefox and launch the application$")
public void open_the_Firefox_and_launch_the_application() throws Throwable
{
System.out.println("This Step open the Firefox and launch the application.");
}
@When("^Enter the Username and Password$")
public void enter_the_Username_and_Password() throws Throwable
{
System.out.println("This step enter the Username and Password on the login page.");
}
@Then("^Reset the credential$")
public void Reset_the_credential() throws Throwable
{
System.out.println("This step click on the Reset button.");
}
}
クラスの名前は ステップ, Cucumber アノテーションは、各メソッドをフィーチャーファイルのステップにマッピングします。
@ギヴン 開く方法を定義します Firefox そしてアプリケーションを起動します。
@いつ ユーザー名とパスワードを入力する方法を定義します。
@それから 認証情報をリセットする方法を定義します。
各メソッドは、コンソールにメッセージを出力するだけです。
以下のスクリーンショットは、Steps.javaスクリプトとプロジェクトツリーを示しています。
注意: ステップ定義とは、あなたが求めるコードです。 Cucumber フィーチャーファイルステップと一致する場合に実行します。
ステップ7) スクリプトを実行します。
以下に示すように、TestRunnerファイル(Runner.java)からこのスクリプトを実行してください。
ステップ8) 出力を分析します。
Runner.javaを実行すると、 Cucumber Steps.javaで定義されているテキストをコンソールに出力します。
シナリオ2:ログイン認証情報を入力して値をリセットする
ここで認証情報を入力します Guru99デモログインページと値のリセット。
シナリオ2では、更新するだけでよい Steps.javaここに実際の Selenium コード。まず、 Selenium jarファイルがプロジェクトに追加されました。
ステップ1) Steps.javaスクリプトを以下のように更新してください。
package StepDefinition;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class Steps {
WebDriver driver;
@Given("^Open the Firefox and launch the application$")
public void open_the_Firefox_and_launch_the_application() throws Throwable
{
System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://demo.guru99.com/v4");
}
@When("^Enter the Username and Password$")
public void enter_the_Username_and_Password() throws Throwable
{
driver.findElement(By.name("uid")).sendKeys("username12");
driver.findElement(By.name("password")).sendKeys("password12");
}
@Then("^Reset the credential$")
public void Reset_the_credential() throws Throwable
{
driver.findElement(By.name("btnReset")).click();
}
}
上記のスクリーンショット Selenium スクリプト:
ステップ2) スクリプトを実行します。
Steps.javaを更新した後、Runner.javaを実行してください。
ステップ3) 出力結果を分析してください。出力結果には以下の内容が表示されます。
- ブラウザが起動しました。
- Guru99銀行のデモサイトが開設されました。
- ログインページでユーザー名とパスワードを入力します。
- リセットボタンを押すと、値が消去されます。
シナリオ3:3セットのデータを使用してログインおよびリセットフローを実行する
ここでは両方を更新する必要があります Steps.java そして、3組の認証情報を使用して同じフローを実行するためのフィーチャーファイル。
ステップ1) フィーチャーファイルを以下のように更新してください。
私たちは、使用 シナリオ概要 (NAIST) と 例 構文なので Cucumber 各データ行に対して同じシナリオをループ処理します。
Feature: Reset functionality on login page of Application
Scenario Outline: Verification of reset button with multiple credentials
Given Open the Firefox and launch the application
When Enter the Username <username> and Password <password>
Then Reset the credential
Examples:
| username | password |
| User1 | password1 |
| User2 | password2 |
| User3 | password3 |
ステップ2) Steps.javaスクリプトを更新してください。
ここでは、メソッドのシグネチャを更新して、Examplesテーブルからパラメータを受け入れるようにします。
package StepDefinition;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class Steps {
WebDriver driver;
@Given("^Open the Firefox and launch the application$")
public void open_the_Firefox_and_launch_the_application() throws Throwable
{
System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://demo.guru99.com/v4");
}
@When("^Enter the Username \"(.*)\" and Password \"(.*)\"$")
public void enter_the_Username_and_Password(String username, String password) throws Throwable
{
driver.findElement(By.name("uid")).sendKeys(username);
driver.findElement(By.name("password")).sendKeys(password);
}
@Then("^Reset the credential$")
public void Reset_the_credential() throws Throwable
{
driver.findElement(By.name("btnReset")).click();
}
}
ステップ3) 更新されたスクリプトを実行してください。
下の画面は、処理が正常に完了したことと、各データセットの処理にかかった時間を示しています。
ステップ4) 出力結果を分析します。以下の手順を3つのデータセットそれぞれについて繰り返します。
- ブラウザが起動しました。
- Guru99銀行のデモサイトが開設されました。
- ログインページでユーザー名とパスワードを入力します。
- リセットボタンを押すと、値が消去されます。























