Advanced web testing | Ranorex
Help CenterUser GuideWeb and mobile testing

より高度な Web テスト

この章では、Web テストに関する、より高度ないくつかのトピックスついて説明します。

Wait for アクションによる要素のロードの待機

ロード時間が通常よりもより長くかかることは、Web テストでよく見られる問題です。これは、テストを失敗させる可能性があり、また、テスターが制御できないことが多いため、厄介な問題となることがあります。これを回避する方法のひとつは、特定の要素のロードが完了するまで、テストを待機させることです。Ranorex Studio では、Wait for アクションを使用することで簡単におこなえます。

アクション テーブルで、Web ページをロードするアクションの後、かつ、ロードされたページの要素を操作するアクションの前に、Wait for アクションを追加します。

10 秒の待機時間が設定された Wait for アクション。このアクションは、リンクされたリポジトリ アイテムが存在するまで待機します。対象のリポジトリ アイテムは、以降のアクションで操作するリポジトリ アイテムである必要があります。

存在を待機するリポジトリ アイテム

Note icon

メモ

Wait for アクションで設定した時間よりもロードに時間がかかり、リポジトリ アイテムが存在しない場合には、テストは失敗します。テストが失敗とならないような、適切な時間を設定してください。

Note icon

メモ

Wait for アクションの代わりに、Delay アクションを使用してテストを待機させることもできます。

ただしこのアクションは、要素が存在するかどうかに関係なく、指定された時間だけテストを一時停止します。待機すべき要素が明確な場合には、Wait for アクションを使用することをおすすめします。この方法の場合には、テストが必要以上に待機することはありません。

Set value アクションによるより確実な値の入力

Web フォームにテキスト文字列のような値を入力することは、Web テストにおける一般的なシナリオのひとつです。これは、キーボードのキー押下をシミュレートすること (Key sequence アクション) の他に、フォームに値を直接設定することでもおこなえます。後者は、マウス クリックなどの操作が必要ないため、通常よりも確実で、エラーが発生しにくくなります。一方で、ユーザー操作がおこなわれないため、テストが失敗する原因となることもあります。

テストの例

この例では、Ranorex test website のサンプル フォームに名前を入力します。以下の手順でおこないます。

Test From の Name フィールドに名前を入力します。

Submit ボタンをクリックします。

以下のような結果が表示されます。

アクション テーブルの表示

テキスト フィールドに名前を入力する Set value アクション

テキスト フィールドを表すリポジトリ アイテム Testname

結果

マウスやキーボード操作なしで、フォームに値が直接設定されます。

参照

Set value アクションについては、Ranorex Studio 基礎 > アクション > ⇢ アクションのリスト を参照してください。

Get value アクションによる値の取得

Web サイト上の値 (数値、文字列、など) を取得し、テストで使用する必要がある場合があります。これをおこなうもっともシンプルな方法は、Get value アクションを使用することです。

テストの例

この例では、Ranorex test website のサンプル フォームのリストから値を取得します。以下の手順でおこないます。

デフォルトの選択状態のまま Submit ボタンをクリックすると、以下の結果が表示されます。

Color/testcolor に green が設定

Colors/testmultiple に green と yellow が設定

ここで、

  • Testmultiple パラメーターから blue を取得します。
  • Testcolor パラメーターに取得した値を設定します。

アクション テーブルの表示

Get value アクションは、Colors フィールドから 値 blue を取得し、変数 $Color に格納します。

Set value アクションは、変数 $Colors を使用し、Color/testcolor フィールドに値を設定します。

結果

以下のような結果になります。

Set value アクションによって、testcolor フィールドの値として blue が設定されます。

Testmultiple フィールドの値は、引き続きデフォルト値のままです。Get value アクションは値の取得のみをおこないます。

参照

Get value アクションについては、Ranorex Studio 基礎 > アクション > ⇢ アクションのリスト を参照してください。

WebDocument アダプター

WebDocument アダプターは、すべてのタグ (header, body など) を含む、Web サイトの完全な表現を作成します。さらに、テスト スクリプトをより効果的にする機能を提供します。

以下のサンプルは、これらの機能の使用例を示しています。

// Identify a web document by its title
WebDocument webDocument = "/dom[@caption='Ranorex Test Page']";
// Open a website
webDocument.Navigate("http://www.ranorex.com");
// Wait until the document is loaded
webDocument.WaitForDocumentLoaded();
// Execute a javascript code
webDocument.ExecuteScript("history.back();");
' Identify a web document by its title
Dim webDocument As WebDocument = "/dom[@caption='Ranorex Test Page']"
' Open a website
webDocument.Navigate("http://www.ranorex.com")
' Wait until the document is loaded
webDocument.WaitForDocumentLoaded()
' Execute a javascript code
webDocument.ExecuteScript("history.back();")

Web 要素の検索とフィルター

Ranorex のフレームワークでは、各 HTML タグ要素に対する、さまざまな種類のアダプター (例: <a> タグに対する ATag アダプターなど) を用意しています。各アダプターには固有のメソッドと属性があります。たとえば、リンク タグ (<a>) には、HREF, TARGET, REL などの属性があります。

// Start IE with a specific website
System.Diagnostics.Process.Start("iexplore.exe", "/web-testing-examples");
// Identify the webdocument by its title
WebDocument webDocument = "/dom[@caption='Ranorex Test Page']";
// Find a link by its link text (innertext)
ATag link = webDocument.FindSingle(".//a[@innertext='simple link']");
link.Click();
' Start IE with a specific website
System.Diagnostics.Process.Start("iexplore.exe", "/web-testing-examples")
' Identify the webdocument by its title
Dim webDocument As WebDocument = "/dom[@caption='Ranorex Test Page']"
' Find a link by its link text (innertext)
Dim link As ATag = webDocument.FindSingle(".//a[@innertext='simple link']")
link.Click()

リポジトリと WebDocument

以下の例は、リポジトリを使用して WebDocument のメソッドにアクセスする方法を示しています。

// Load repository
ProjectRepository repo = ProjectRepository.Instance;
// Open a website
repo.WebPage.Self.Navigate("http://www.ranorex.com");
// Wait until the document is loaded
repo.WebPage.Self.WaitForDocumentLoaded();
' Load repository
Dim repo As ProjectRepository = ProjectRepository.Instance
' Open a website
repo.WebPage.Self.Navigate("http://www.ranorex.com")
' Wait until the document is loaded
repo.WebPage.Self.WaitForDocumentLoaded()