Selenium 自動化のための Sikuli チュートリアル

Selenium の Sikuli とは何ですか?

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

Selenium Webdriver で Sikuli を使用する方法

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

以下の手順は、Selenium Webdriver を使用して Sikuli を構成する手順のリストです。

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

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

Selenium Webdriver で Sikuli を使用する

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

Selenium Webdriver で Sikuli を使用する

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

Sikuliのスクリーンクラス

Screen クラスは、Sikuli が提供するすべてのメソッドの基本クラスです。 Screen クラスには、クリック、 double-クリックしてテキストに入力します box、ホバーなど。以下は、Screen クラスが提供する一般的に使用されるメソッドのリストです。

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

s.click(“QA.png”);

double この方法は次の目的で使用されます。 double 要素をクリックします。パラメータとしてイメージ名を受け取ります。 スクリーン s = 新しいスクリーン();

s.doubleクリック(「QA.png」);

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

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

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

s.hover(“QA.png”);

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

s.find(“QA.png”);

Sikuliのパターンクラス

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

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

次のことwing これらは、Pattern クラスの最も一般的に使用されるメソッドです。

方法 Description 構文
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 ポップアップ「ファイルテキスト」Box」と「開く」ボタン。

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

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

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

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

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

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

この例では、ファイル入力テキストを認識します。 box そしてボタンを開きます Windows 保存されている画像を使用してポップアップします。画像キャプチャからテスト スクリプトの実行までに画面解像度が変わると、Sikuli の動作に一貫性がなくなります。したがって、画像がキャプチャされるのと同じ解像度でテスト スクリプトを実行することを常にお勧めします。画像のピクセルサイズを変更すると、Sikuli がスローされます。wing 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) を待つ windows ポップアップが表示されます。 Wait メソッドは、オープンに伴う遅延を処理するために使用されます。 windows 参照ボタンをクリックするとポップアップが表示されます。

s.wait(fileInputTextBox, 20);

ステップ7) 入力ファイルテキストにファイルパスを入力します box そして「開く」ボタンをクリックします

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

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

driver.close();

出力:

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

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

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

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

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

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

要約

Sikuli は、Web ページ上の Flash オブジェクトを処理するために使用されます。 windows 簡単にポップアップを表示します。 Sikuli は、ユーザー インターフェイス上の要素が頻繁に変更されない場合に最適です。 ○wing この欠点があるため、自動化テストの観点からは、Robot や AutoIT などの他のフレームワークに比べて、Sikuli の優先度は低くなります。