メインコンテンツまでスキップ
バージョン:25.2

クロスブラウザーとクロスプラットフォームのスクリプティング

Eggplant Functionalのスクリプトは、通常、すべての基本的なオペレーティングシステム上のすべてのブラウザで、わずかな修正、または修正なしで使用することができます。これは、スクリプトがユーザーワークフローを単に記述しているからであり、ワークフローは常に同じです。

参照画像の大部分は、すべてのブラウザ(Chrome、Firefox、Safari、Internet Explorer、Operaなど)およびすべてのオペレーティングシステム(Windows、Mac、Linuxなど)で再利用できます。ただし、以下の2つの状況では、すべての環境で参照画像を再利用できない可能性があります。

  • 異なるブラウザはフォントを異なる方法でレンダリングするので、テキスト検索(画像検索ではなく)を以下に説明するように使用するべきです。
  • 実際のブラウザコントロール(例えば、更新ボタン)はブラウザごとに異なります。そのため、これらの特定の参照画像もブラウザごとに異なります。
注記

クロスブラウザテストを容易にするため、Eggplant FunctionalはSauce Labsとの統合をサポートしています。Sauce Labsを利用すると、様々なブラウザとOSの組み合わせを簡単にテストできます。詳しくはSauce Labsデバイスおよびブラウザへの接続をご覧ください。

クロスブラウザおよびクロスプラットフォーム スクリプティングのベスト プラクティス

この文書では、効率的なクロスブラウザスクリプティングのためのベストプラクティスを紹介します。要約すると:

  • 画像には、背景を許容する デフォルトの検索タイプを使用します。
  • テキストを操作する場合は、画像検索ではなく、OCR テキスト検索を使用します。
  • テスト作成を容易にするために、コアコードとOS固有のコードを分離します。
  • テストの開始時に環境設定スクリプトを実行します。
  • プライマリスイートからテストを実行します。
  • SUTの命名規則を作成します。
  • 画像キャプチャの必要性を減らすために、可能な限りキーボードコマンドを使用します。

OCRを使用してテキストの四角形を検索する

最初にすべきことの一つは、OCRを使用することから始めます。Eggplant FunctionalのOCRエンジンは、解像度、テキストサイズ、色に関係なく動作しますので、これらの3つの要素がブラウザ間で異なる場合、画像を再キャプチャする必要はありません。

OCRの信頼性を最大化し、実行速度を上げるために、検索矩形をテキストが存在すると知っている領域に設定します。

全画面の一部にsearchRectangleを設定する再利用可能なカスタム機能ハンドラを作成することもできます。例については、ScreenPart関数ハンドラの使用を参照してください。

コアコードとOS固有のコードを分離する

大部分のコードは操作システム間で使用可能ですが、WindowsとMacでは動作の仕方にわずかな違いがあります。たとえば、ブラウザを開く方法などです。Windows専用のコードとMac専用のコードを別々のスイートに分けるべきです。これにより、テストの作成の観点からWindowsとMacで同じコードを使用することができます。以下のコード例では、初期スイートも正しいイメージスイートに設定されています。

set the initialsuites to ("Path/To/suite")
OpenBrowser

これで、Eggplant Functionalが最初にコードをチェックするスイートを、あなたのOS専用のコードスイートに設定すべきです。もし関数がそこで見つからない場合、Eggplant Functional Functionalはコアコードスイートを見ます。したがって、あなたのコードは以下のようになるでしょう:

set the initialsuites to ("Path/To/suite", "Path/To/Core/CodeAndImagesSuite")
VerifiyPrice //これはコアコードスイート内にあります
OpenBrowser //これは OS 固有のコードスイート内にあります

すべてのブラウザでコアとなる画像は、同じスイートに保存されるべきであることに注意してください。特定のOSにのみ関連する画像は、それぞれのOS専用のスイートに保存されるべきです。

すべてのテストの開始時に環境設定スクリプトを実行する

全てを単純化するために、コアコードと画像のスイート、OS専用のコードと画像のスイート、そして環境設定スイートを同じフォルダに保存するべきです。あなたの環境設定スクリプトは下記の例のようになるでしょう。これにより、スイートの相対パスを使用してスイートへのパスを決定するので、スイートが移動してもコードは依然として機能します。

set SUTName to the name of connectioninfo()
set SuitePath to the folder of the folder of the folder of me

put (Windows_7:"Windows","OSX_1055":"Mac") into SUTOSList
//Define which OS a device is to pick the correct device specific functions
set SUTOS to SUTOSList.(SUTName)

put (Windows_7:"Windows","OSX_1055":"Mac") into SUTSuiteList //Define what suite of images a device should use
set SUTSuite to SUTSuiteList.(SUTName)

//Set up path to core functions, OS functions and device images
set the initialsuites to (SuitePath & "Asset_" & "Core_Functions.suite",SuitePath & "Asset_" & SUTOS & "_Functions" & ".suite")

これで、私たちは各テストを実行する前に環境設定スクリプトを実行する必要があります。これを最も簡単に行う方法は、すべてのイメージとコードのスイートに環境設定スイートをヘルパースイートとして追加することです。その後、そのスイートで任意のスクリプト/イメージが選択される前に環境設定スクリプトを実行することができます。以下は、ヘルパースイートを追加し、環境設定スクリプトを実行する場所を示す画像です:

Helper suite environment setup script specified in Eggplant Functional Settings

Eggplant 機能設定で指定されたヘルパースイート環境設定スクリプト

また、スイートを別のパスに移動することになった場合でも、ヘルパースイートのパスがまだ有効であるように、相対パスを使用してヘルパースイートを設定することもできます。これについての情報はここで見つけることができます。

プライマリスイートからテストを実行する

あなたが別のスイートで書いたコアコードからテストを作成します。これにより、将来のメンテナンスが容易になり、大規模なチーム間でコードの再利用が最大限になります。作成する各テストデザインスイートには、すべてのコードパスを設定するために、環境設定スイートをヘルパースイートとして追加する必要があります。その後、テストデザインスイートはかなりフラットに見えるはずで、あなたが書いたコア関数を望む順序で並べ替えるだけです。以下に例を示します:

Running tests from a primary suite

プライマリスイートからのテストの実行

SUTの命名規則を作成する

どのSUTに接続されているかを決定するために、最善の方法は、SUTの良好な命名規則を作成することです。これは次の形式を取るべきです:SUTOperatingSystem_OperatingSystemVersion。これにより、Eggplant Functionalが接続されているデバイスを簡単に特定し、環境をそれに応じて設定することができます。以下にいくつかの例を示します:

Windows_7では、WindowsがSUT OSで、7がOSバージョンです。

OSX_1055では、OSXがSUT OSで、10.5.5がOSバージョンです。

キーボードコマンドを使用してスクリプトをより効率的に作成する

可能な限りスクリプトでキーボードコマンドを使用することは効率的です。以下にデスクトップでのこれに関するいくつかの良い例を示します:

//Mac
typetext commandkey,F//検索ウィンドウを開く
typetext commandkey,space//スポットライトを開く
typetext commandkey,tab//開いているウィンドウ間でタブ
typetext commandkey, shiftkey, c //コンピュータウィンドウを開く
//Windows
typetext altKey,f4//ウィンドウを閉じる
typetext altKey,tab//開いているウィンドウ間でタブ
typetext altkey,escape//開いた順序でウィンドウをタブ
typetext controlkey,escape//スタートメニューを表示

WindowsとMacのショートカットの完全なリストは、以下のリンクで見つけることができます:

Windows: キーボードショートカット

MacMacのキーボードショートカット