Selenium C#チュートリアル:NUnitフレームワークとサンプル
⚡ スマートサマリー
Selenium WebDriverはIWebDriverインターフェースを介してC#からブラウザを操作し、NUnitはテスト属性、アサーション、およびテストエクスプローラーのレポート機能を提供することで、これらのブラウザ操作を再現可能な自動テストに変換します。
Selenium 概要
Selenium オープンソースのウェブです 自動化テスト 複数のブラウザと複数のオペレーティングシステムをサポートするツール。テスターは複数のプログラミング言語を使用できます。 Java、C#、 Python自動テストのコーディングには、Ruby、PHP、Perl を使用します。このツールを初めて使用する場合は、 Selenium チュートリアル WebDriver 対 Selenium RC比較.
Selenium ブラウザの制御はブラウザが提供するものであり、それを操作する言語は構造を提供する。
C# の概要
C#は、 C++ (NAIST) と JavaC# を使用すると、開発者は .NET プラットフォーム上で Visual Studio を使用してアプリケーションを構築できます。以下は、 C#.
- オブジェクト指向プログラミング言語です
- コンソール、Windows、Webベースのアプリケーションの開発をサポートします。
- カプセル化、継承、ポリモーフィズムなどの機能を提供します。
配線前に Selenium プレーンなC#プログラムの形状を認識することは、その場合役立ちます。
C# の基本構文
C# のプログラムには、以下のセクションが含まれている必要があります。
- 名前空間宣言
- クラス
- クラスの属性とメソッド
- 主な方法
- プログラムステートメント
例 -
以下はサンプルです Selenium テキスト「Guruシステムコンソールに「99」と表示されます。
using System; namespace FirstProgram { class DemoPrint { static void main(){ Console.WriteLine("Guru99"); } } }
説明:
- 上記の名前空間 Selenium C# の例は、複数のクラスのコレクションです。各名前空間はキーワード「using」を使用して宣言する必要があります。
- コードの最初のステートメントには、名前空間「System」がプログラムに含まれています。 システム名前空間は、C# で使用される基本的なクラスとイベントを定義します。 使用する名前空間はプログラムの要件によって異なります。
- XNUMX 番目のステートメントは、クラス「DemoPrint」の名前空間「FirstProgram」を宣言しています。 AC# ファイルには、同じ名前空間内に複数のクラスを含めることができます。
- XNUMX 番目のステートメントにはクラス宣言が含まれています。 クラスには複数の属性と複数のメソッドが含まれる場合があります。
- XNUMX 番目のステートメントには、Main メソッドの宣言が含まれています。 main メソッドは、各クラスの実行のエントリ ポイントです。
- 最後のステートメントは、ステートメントをコンソールに出力するために使用される C# 構文です。WriteLine は、
Consoleクラス。エントリポイントは次のように綴られていることに注意してください。Main大文字のMは実際のC#で、小文字はmain上記のサンプルでは、エントリポイントとして認識されません。
構文が明確になったので、次の作業は、それらのテストをコンパイルして実行するためのツールをインストールすることです。
Selenium C# セットアップあり
Visual Studioの設定方法 Selenium ウェブドライバー:
今これで Selenium C#チュートリアルでは、Visual Studioをセットアップする手順を段階的に学びます。 Selenium ウェブドライバー:
Visual Studioは、開発者が複数のプラットフォームにまたがるアプリケーションを構築するために使用する統合開発環境(IDE)です。 Windows, Android、iOS およびクラウドベースのアプリケーション。
ステップ1) に移動します URL
https://visualstudio.microsoft.com/downloads/ をクリックします '無料ダウンロード' Visual Studio Community タブに表示されるボタン
ステップ2) ダウンロードしたexeを開きます。 管理者権限を求められたら、「はい」をクリックします。
ステップ3) 以下のポップアップが表示されます。 「続行」ボタンをクリックします。
以下のポップアップに示されているように、ファイルがダウンロードされます。
ステップ4) 次の画面で、
チェックボックスを選択してください
- ユニバーサル Windows プラットフォーム開発
- .NET デスクトップ開発
「インストール」をクリックします。
各コンポーネントのインストールが完了するまで待ちます。 ファイルのサイズは 16GB なので時間がかかります。
ステップ5) 以下のポップアップが表示されます。「再起動」ボタンをクリックします。
ステップ6) マシンを再起動したら、スタート メニューで「Visual Studio」を検索し、検索結果をクリックします。次のポップアップが表示されます。既存のアカウントがない場合は、「今はしない、後で」リンクをクリックします。
ステップ7) 次の画面で、
- 好みのカラーテーマを選択してください
- 「Visual Studio を起動」ボタンをクリックしてください。
ステップ8) Visual Studio の「はじめに」画面が表示されます。
Visual Studio で新しいプロジェクトを作成します。
ステップ1) [ファイル]メニューで、[新規作成] > [プロジェクト]をクリックします。
ステップ2) 次の画面で、
- 「Visual C#」オプションを選択します。
- 「コンソール アプリ (.Net Framework)」をクリックします。
- 名前を「Guru99 "
- [OK]をクリックします。
ステップ3) プロジェクトが正常に作成されると、以下の画面が表示されます。
Visual Studioをセットアップする Selenium ウェブドライバー:
ステップ1) [ツール] -> [N] に移動します。uGet パッケージマネージャー -> Nの管理uGet ソリューションのパッケージ
ステップ2) 次の画面で
- 検索する Selenium 結果の画面上で
- 最初の検索結果を選択
- プロジェクトのチェックボックスをチェックする
- 「インストール」をクリックします
ステップ3) ポップアップ画面で「OK」ボタンをクリックします
ステップ4) パッケージが正常にインストールされると、以下のメッセージが表示されます。
Selenium ブラウザを開くことはできるようになったが、テストが合格したかどうかを報告することはまだできない。それは単体テストフレームワークの役割だ。
NUnit フレームワーク: 概要
NUnit は、 単体テスト Visual Studioでサポートされているフレームワークと Selenium WebDriver。NUnitは、.NETアプリケーション向けの単体テストフレームワークとして最も広く利用されています。NUnitはテスト結果を読みやすい形式で表示し、テスターが自動テストをデバッグできるようにします。
Visual Studioを使用するには、NUnit FrameworkとNUnit Test Adapterをインストールする必要があります。
NUnit フレームワークをインストールする手順
今これで Selenium C# チュートリアルで、NUnit フレームワークをインストールするプロセスを学びましょう。
ステップ1) [ツール] -> [N] に移動します。uGet パッケージマネージャー -> Nの管理uGet ソリューションのパッケージ
ステップ2) 次のウィンドウで
- NUnitを検索する
- 検索結果を選択してください
- プロジェクトの選択
- インストールをクリックします。
ステップ3) 以下のポップアップが表示されます。 「OK」ボタンをクリックします。
ステップ4) インストールが完了すると、以下のメッセージが表示されます。
NUnit テスト アダプターをダウンロードする手順
この NUnit チュートリアルでは、NUnit テスト アダプターをダウンロードする手順について説明します。
以下の手順は 32 ビット マシンでのみ機能することに注意してください。64 ビット マシンの場合は、以下と同じ手順に従って「NUnit3 テスト アダプター」をダウンロードする必要があります。
現在のパッケージ: 現代のプロジェクトでは NUnit3テストアダプター とともに Microsoft.NET.Test.Sdk高齢者 NUnitTestAdapter パッケージはもはやメンテナンスされていません。.NET (Core) では、プロジェクト全体をスキャフォールディングできます。 dotnet new nunitこれにより、3つのパッケージすべてが自動的に追加されます。
ステップ1) [ツール] -> [N] に移動します。uGet パッケージマネージャー -> Nの管理uGet ソリューションのパッケージ。その画面では、
- NUnitTestAdapter を検索
- 「検索結果」をクリック
- プロジェクトの選択
- インストールをクリックします。
ステップ2) 確認ポップアップで[OK]をクリックします。インストールが完了すると、次のメッセージが表示されます。
両方のファイルがインストールされたので、次のステップはそれらを単一のテストクラスに結合することです。
Selenium およびNUnitフレームワーク
Selenium と NUnit フレームワークを統合すると、テスターはさまざまなテスト クラスを区別できるようになります。また、NUnit では、テスターが SetUp、Test、TearDown などのアノテーションを使用して、テストの実行前と実行後にアクションを実行することもできます。
NUnit フレームワークは次のものと統合できます Selenium NUnitテストクラスを作成し、NUnitフレームワークを使用してテストクラスを実行することによって。 Java このパターンの同等品は、 JUnit フレームワークチュートリアルまた、Visual Studio 内の NUnit の .NET 版についても説明します。 TestNG の Selenium.
この手順の下に Selenium NUnit フレームワークを使用してテスト クラスを作成して実行するには、C# フレームワーク チュートリアルが必要です。
NUnit Test クラスを作成する手順 Selenium:
ステップ1) ソリューションエクスプローラーで、プロジェクトを右クリックし、[追加] > [クラス] を選択します。
ステップ2) クラス作成ウィンドウが表示されます。
- クラスに名前を付けます
- 「追加」ボタンをクリックします
ステップ3) 以下の画面が表示されます。
ステップ4) 作成したクラスに以下のコードを追加してください。なお、Chromeドライバの初期化時に「chromedriver.exe」ファイルの場所を指定する必要があることにご注意ください。 Selenium 4.6以降のバージョンを出荷 Selenium マネージャー一致するドライバーを自動的に解決するので new ChromeDriver() パス引数なしが現在の形式です。以下のパスはスクリーンショットと一致するため、そのまま残されています。
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class Guru99Demo { IWebDriver driver; [SetUp] public void startBrowser() { driver = new ChromeDriver("D:\\3rdparty\\chrome"); } [Test] public void test() { driver.Url = "http://www.google.co.in"; } [TearDown] public void closeBrowser() { driver.Close(); } } }
ステップ4) 「ビルド」→「ソリューションのビルド」をクリックします。
注: ビルド時に「エントリ ポイントに適した静的な 'main' メソッドが含まれていません」のようなエラーが表示される場合があります。
この問題を解決するには、「プロジェクト」>「プロパティ」に進み、「出力タイプ」を「クラスライブラリ」に変更してください。デフォルトは「コンソールアプリケーション」です。
ステップ5) ビルドが成功したら、[テスト エクスプローラー] ウィンドウを開く必要があります。 「テスト」をクリックします -> Windows -> テストエクスプローラー
ステップ6) [テスト エクスプローラー] ウィンドウが開き、使用可能なテストのリストが表示されます。 テスト エクスプローラーを右クリックし、[選択したテストの実行] を選択します。
ステップ7) Selenium 指定されたブラウザを開く必要があります URL ブラウザを閉じます。テストエクスプローラーウィンドウのテストケースステータスが「合格」に変更されます。
試験に合格すれば、システムが正常に機能していることが証明されます。以下は、実際に試験問題を作成する際に使用する語彙です。
Selenium C# の WebDriver コマンド
C#はブラウザとのやりとりに「IWebDriver」インターフェースを使用します。以下は、C#で使用できるコマンドのカテゴリです。 Selenium C# で。
- ブラウザコマンド
- Web 要素コマンド
- ドロップダウンコマンド
今これで Selenium C# チュートリアルでは、 Selenium WebDriverコマンドを1つずつ実行します。 Java 対応するものは、この中で実証されています 最初のWebDriverスクリプト ウォークスルー。
以下のコマンドは現在も有効です IWebDriver 表面 Selenium 4. 構文は変更されずに引き継がれます。
ブラウザコマンド:
以下はC#で使用できるブラウザコマンドの一覧です。 Selenium.
| コマンド名 | 詳細説明 | 構文 |
|---|---|---|
| URLコマンド | このコマンドは、指定されたファイルを開くために使用されます。 URL ブラウザで。 |
driver.Url = "https://www.guru99.com"
|
| タイトルコマンド | このコマンドは、現在開いている Web ページのページ タイトルを取得するために使用されます。 |
String title = driver.Title
|
| ページソースコマンド | このコマンドは、現在開いている Web ページのソース コードを取得するために使用されます。 |
String pageSource = driver.PageSource
|
| 閉じるコマンド | このコマンドは、最近開いたブラウザ インスタンスを閉じるために使用されます。 |
driver.Close(); |
| コマンドを終了する | このコマンドは、開いているすべてのブラウザ インスタンスを閉じるために使用されます。 |
driver.Quit(); |
| バックコマンド | このコマンドは、ブラウザ履歴の前のページに移動するために使用されます。 |
driver.Navigate().Back(); |
| 前進コマンド | このコマンドは、ブラウザ履歴の次のページに移動するために使用されます。 |
driver.Navigate().Forward() |
| リフレッシュコマンド | このコマンドはブラウザの更新を実行するために使用されます。 |
driver.Navigate().Refresh() |
ブラウザのコマンドはウィンドウに対して作用し、次のグループはウィンドウ内のコンテンツに対して作用します。
WebElementコマンド
WebElementは、Webページ上のあらゆる要素を表します。これらはHTMLタグで表現されます。ボタン、テキストボックス、リンク、画像、テーブル、フレームはすべてWebElementです。 Operaこれらの要素に対するアクションは、 IWebElement インターフェース。WebElement とやり取りするには、まず 要素を見つける ページ上で、それに対して操作を実行します。利用可能な戦略については、以下で説明します。 ロケーター Seleniumブラウザ開発者ツール、または以下のスクリーンショットより前の古いFirebugおよびFirepathアドオンを使用して、 XPath WebElement の。
以下は、C# で使用できる WebElement コマンドです。
| コマンド名 | 詳細説明 | 構文 |
|---|---|---|
| クリックコマンド | このコマンドは、Web 要素をクリックするために使用されます。要素をクリック可能にするには、要素が Web ページに表示されている必要があります。このコマンドは、チェックボックスやラジオ ボタンの操作にも使用されます。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.Click();
|
| クリアコマンド | このコマンドは、テキスト ボックスの既存の内容をクリアするために特に使用されます。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
element.Clear();
|
| SendKeys コマンド | このコマンドはテキストボックスに値を入力するために使用されます。入力する値はパラメータとして渡す必要があります。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.SendKeys("guru99"); |
| 表示されたコマンド | このコマンドは、特定の要素が Web ページに表示されているかどうかを識別するために使用されます。このコマンドは、Web 要素の可視性に応じて、ブール値 (true または false) を返します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Displayed; |
| 有効なコマンド | このコマンドは、特定の Web 要素が Web ページ上で有効になっているかどうかを識別するために使用されます。 このコマンドはブール値を返します。 結果として true または false。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Enabled; |
| 選択されたコマンド | このコマンドは、特定のWeb要素が選択されているかどうかを識別するために使用されます。このコマンドは、チェックボックス、ラジオボタン、および選択操作に使用されます。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Selected; |
| コマンドを送信します: | このコマンドは click コマンドに似ていますが、違いは HTML フォームに「送信」タイプのボタンがあるかどうかです。 click コマンドは任意のボタンをクリックしますが、submit コマンドはタイプが submit のボタンのみをクリックします。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.submit();
|
| テキストコマンド | このコマンドは、Webelement の内部テキストを返します。 このコマンドは結果として文字列値を返します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String text=element.Text; |
| タグ名コマンド | このコマンドは、Web 要素の HTML タグを返します。 結果として文字列値を返します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String tagName = element.TagName; |
| GetCSSValue コマンド: | このメソッドは、Web 要素の色を rgba 文字列 (赤、緑、青、アルファ) の形式で返すために使用されます。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String color = element.getCSSValue; 出力– 要素の色が赤の場合、出力は rgba(255,0,0,1) になります。 |
上記のサンプルに関する注記: 表は元の構文を再現しています。 Selenium .NET ではメンバーはパスカルケースです — element.Submit() (NAIST) と element.GetCssValue("color") - と GetCssValue CSSプロパティ名を引数として受け取ります。
ドロップダウンコマンド:
C# でのドロップダウン操作は、SelectElement クラスを使用して実現できます。
以下は、C# で使用できるさまざまなドロップダウン操作です。
| コマンド名 | 詳細説明 | 構文 |
|---|---|---|
| SelectByText コマンド | このコマンドは、オプションのテキストに基づいてドロップダウンのオプションを選択します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByText("Guru99"); |
| SelectByIndex コマンド | このコマンドは、インデックスに基づいてオプションを選択するために使用されます。 ドロップダウンのインデックスは 0 から始まります。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByIndex("4"); |
| SelectByValue コマンド | このコマンドは、オプション値に基づいてオプションを選択するために使用されます。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByValue("Guru99"); |
| オプションコマンド | このコマンドは、ドロップダウンに表示されるオプションのリストを取得するために使用されます。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); List<IWebelement> options = select. Options; int size = options.Count; for(int i=0;i<options.size();i++) { String value = size.elementAt(i).Text; Console.writeLine(value); } 上記のコードは、すべてのオプションをドロップダウン内のコンソールに出力します。 |
| IsMultiple コマンド | このコマンドは、ドロップダウンが複数選択ドロップダウンであるかどうかを識別するために使用されます。複数選択ドロップダウンでは、ユーザーは一度に複数のオプションを選択できます。このコマンドはブール値を返します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); Boolean status = select.IsMultiple(); |
| すべての選択解除コマンド | このコマンドは複数選択ドロップダウンで使用されます。 すでに選択されているオプションをクリアします。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectAll(); |
| DeSelectByIndex コマンド | このコマンドは、インデックスを使用して、すでに選択されている値の選択を解除します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByIndex("4"); |
| DeSelectByValue コマンド | このコマンドは、その値を使用して、すでに選択されている値の選択を解除します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByValue("Guru99"); |
| DeSelectByText コマンド | このコマンドは、テキストを使用して、すでに選択されている値の選択を解除します。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByText("Guru99"); |
以下の 4 つのスクリプトは、上記のコマンドを Guru99個のデモサイト。それぞれが、実行可能な完全なNUnitテストクラスです。
Code サンプル
例 1: XPATH ロケーターを使用してリンクをクリックします。
テストシナリオ:
- デモに移動 Guru99ページ目 – https://demo.guru99.com/test/guru99home/
- ウィンドウを最大化する
- 「テスト」メニューをクリックします
- ブラウザを閉じます
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("D:\\3rdparty\\chrome"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebelement link = m_driver.FindElement(By.XPath(".//*[@id='rt-header']//div[2]/div/ul/li[2]/a")); link.Click(); m_driver.Close(); } } }
例 2: テキストへのデータの入力Box XPATH ロケーターを使用してボタンをクリックします。
テストシナリオ:
- に移動します Guru99 デモページ – https://demo.guru99.com/test/guru99home/
- メールのテキストボックスにデータを入力する
- サインアップボタンをクリックします
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-email']")); IWebElement signUpButton = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-submit']")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
例 3: テキストへのデータの入力Box CSS ロケーターを使用してボタンをクリックします。
テストシナリオ:
- に移動します Guru99 デモページ – https://demo.guru99.com/test/guru99home/
- メールのテキストボックスにデータを入力する
- サインアップボタンをクリックします
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-email]")); IWebElement signUpButton = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-submit]")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
例 4: ドロップダウンで値を選択します。
テストシナリオ:
- に移動します Guru99 デモページ – https://demo.guru99.com/test/guru99home/
- ソフトウェアの制限をクリック SAP
- 名前とメールのテキストボックスにデータを入力します
- 「コース」ドロップダウンから値を選択します
- ブラウザを閉じます
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; namespace Guru99Demo { class TestSelect { IWebDriver m_driver; [Test] public void selectDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebElement course = m_driver.FindElement(By.XPath(".//*[@id='awf_field-91977689']")); var selectTest = new SelectElement(course); // Select a value from the dropdown selectTest.SelectByValue("sap-abap"); } } }
































