Sikuli チュートリアル Selenium オートメーション

シクリとは何ですか Selenium?

シクリ オープンソースの GUI ベースのテスト自動化ツールです。主に、Web ページの要素を操作したり、ウィンドウ ベースのポップアップを処理したりするために使用されます。Sikuli は、「画像認識」と「GUI の制御」の技術を使用して、Web ページの要素やウィンドウ ポップアップを操作します。Sikuli では、すべての Web 要素が画像として取得され、プロジェクト内に保存されます。

Sikuli を使用する方法 Selenium ウェブドライバー

Sikuli は、Sikuli JAR ファイルを使用して Selenium WebDriver と統合できます。

以下のシーケンスは、Selenium WebDriver を使用して Sikuli を構成する手順のリストです。

ステップ1) ダウンロード 以下の URL から Sikuli JAR ファイルをダウンロードし、ZIP ファイルの内容をフォルダーに解凍します。

https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5

Sikuli を使用する Selenium ウェブドライバー

ステップ2) 新しい JAVA プロジェクトを作成します Eclipse プロジェクトを右クリック -> ビルドパス -> ビルドパスの構成を使用して、JARファイルをビルドパスに追加し、Selenium jarファイルも追加します。

Sikuli を使用する Selenium ウェブドライバー

JAR ファイルをプロジェクトのビルド パスに追加すると、Sikuli が提供するクラスを使用できるようになります。

Sikuliのスクリーンクラス

Screen クラスは、Sikuli が提供するすべてのメソッドの基本クラスです。Screen クラスには、クリック、ダブルクリック、テキスト ボックスへの入力、ホバーなど、画面要素に対して一般的に実行されるすべての操作の定義済みメソッドが含まれています。以下は、Screen クラスによって提供されるよく使用されるメソッドのリストです。

方法 説明 構文
クリック このメソッドは、画像名をパラメータとして使用して画面上の要素をクリックするために使用されます。 スクリーン s = 新しいスクリーン();

s.click(“QA.png”);

ダブルクリック このメソッドは要素をダブルクリックするために使用されます。パラメータとして画像名を受け入れます。 スクリーン s = 新しいスクリーン();

s.doubleClick(“QA.png”);

種類 このメソッドは、要素に入力値を提供するために使用されます。 パラメータとして送信される画像名とテキストを受け取ります。

s.type(“QA.png”,“TEXT”);

ホバー このメソッドは、要素の上にマウスを移動するために使用されます。 パラメータとしてイメージ名を受け取ります。

s.hover(“QA.png”);

もう完成させ、ワークスペースに掲示しましたか? このメソッドは、画面上の特定の要素を検索するために使用されます。 パラメータとしてイメージ名を受け取ります。

s.find(“QA.png”);

Sikuliのパターンクラス

パターン クラスは、要素を一意に識別するために画像ファイルを追加の属性に関連付けるために使用されます。 画像のパスをパラメータとして受け取ります。

パターン p = new Pattern(「画像のパス」);

以下は、Pattern クラスで最もよく使用されるメソッドです。

方法 説明 構文
getファイル名 Pattern オブジェクトに含まれるファイル名を返します。

パターン p = 新しいパターン(“D:\Demo\QA.png”);

文字列ファイル名 = p.getFileName();

同様の このメソッドは、類似度が指定された値に設定された新しい Pattern オブジェクトを返します。 パラメータとして 0 ~ 1 の類似度値を受け取ります。 Sikuli は、指定された類似性の範囲内にあるすべての要素を検索し、新しいパターン オブジェクトを返します。

パターン p1 = p.similar(0.7f);

正確な このメソッドは、類似度が 1 に設定された新しいパターン オブジェクトを返します。指定された要素の完全一致のみを検索します。

パターン p1 = p.exact();

Sikuli を使用したファイルアップロードのコード例

以下のコードは、ファイルのアップロードに Sikuli を使用する方法を説明しています。 Firefox.

package com.sikuli.demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen;
import org.openqa.selenium.chrome.ChromeDriver;

public class SikuliDemo {

    public static void main(String[] args) throws FindFailed {

        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        String filepath = "D:\\Guru99Demo\\Files\\";
        String inputFilePath = "D:\\Guru99Demo\\Files\\";
        Screen s = new Screen();
        Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
        Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
        WebDriver driver;

        // Open Chrome browser    
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/image_upload/index.php");

        // Click on Browse button and handle windows pop up using Sikuli
        driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
        s.wait(fileInputTextBox, 20);
        s.type(fileInputTextBox, inputFilePath + "Test.docx");
        s.click(openButton);

        // Close the browser
        driver.close();
    }
}

コードの説明:

ステップ1) 最初のステートメントには、Chrome のドライバー実行可能パスの設定が含まれます。

System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");

ステップ2) 次のようなスクリーンショットツールを使用します。 Snipping Tool Windowsのポップアップのスクリーンショットを撮るには「FileTextBox」と「開く」ボタン。

Sikuli を使用したファイルアップロードのコード例

スクリーンショットは次のようになります:-

Sikuli を使用したファイルアップロードのコード例

Windowsのファイル入力テキストボックスと開くボタンの画像は、「FileText」に保存されます。Box.PNG」と「OpenButton.PNG」。

Sikuli は、画像認識技術を使用して画面上の要素を認識します。 画像のみに基づいて画面上の要素を検索します。

例: メモ帳を開く操作を自動化したい場合は、メモ帳のデスクトップ アイコンの画像を PNG ファイルに保存し、その上でクリック操作を実行する必要があります。

私たちの場合、ファイル入力テキストボックスを認識し、ボタンを開きます。 Windows 保存された画像を使用してポップアップを表示します。画面解像度が画像キャプチャからテスト スクリプトの実行までの間に変更されると、Sikuli の動作に一貫性がなくなります。したがって、画像がキャプチャされたのと同じ解像度でテスト スクリプトを実行することを常にお勧めします。画像のピクセル サイズが変更されると、Sikuli は FindFailed 例外をスローします。

ステップ3) 次のステートメントには、Screen クラスと Pattern クラスのオブジェクトの作成が含まれます。 新しい画面オブジェクトを作成します。 アップロードするファイルのパスをパラメータとして Pattern オブジェクトに設定します。

Screen s = new Screen();
Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
Pattern openButton = new Pattern(filepath + "OpenButton.PNG");

ステップ4) 以下のステートメントには、URL を使用して Chrome ブラウザを開くことが含まれます。 https://demo.guru99.com/test/image_upload/index.php

driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");

上記の URL は、ファイル アップロード機能をデモンストレーションするためのデモ アプリケーションです。

ステップ5) 以下のステートメントを使用してファイルを選択ボタンをクリックします

driver.findElement(By.xpath(".//*[@id='photoimg']")).click();

ステップ6) ウィンドウのポップアップが表示されるまで待ちます。Wait メソッドは、参照ボタンをクリックした後にウィンドウのポップアップを開くときに発生する遅延を処理するために使用されます。

s.wait(fileInputTextBox, 20);

ステップ7) 入力ファイルテキストボックスにファイルパスを入力し、[開く]ボタンをクリックします。

s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);

ステップ8) ブラウザを閉じます

driver.close();

出力:

最初に、スクリプトは Chrome ブラウザを開きます

Sikuli を使用したファイルアップロードのコード例

「ファイルを選択」ボタンをクリックすると、Windows のファイルポップアップ画面が表示されます。ファイル入力テキストボックスにデータを入力し、「開く」ボタンをクリックします。

Sikuli を使用したファイルアップロードのコード例

ファイルのアップロードが完了すると以下の画面が表示され、ブラウザが閉じます。

Sikuli を使用したファイルアップロードのコード例

まとめ

Sikuli は、Web ページ上のフラッシュ オブジェクトやウィンドウのポップアップを簡単に処理するために使用されます。Sikuli は、ユーザー インターフェイスの要素が頻繁に変更されない場合に最適です。この欠点により、自動化テストの観点からは、Sikuli は Robot や AutoIT などの他のフレームワークに比べてあまり好まれません。