Selenium Webdriver のロボット クラス

Seleniumのロボットクラスとは何ですか?

ロボット教室 Selenium では、Java プラットフォームの実装の自動テストを可能にするために使用されます。 テスト自動化、自己実行デモ、およびユーザーがマウスやキーボードの制御を必要とするその他のアプリケーション用に、ネイティブ システムで入力イベントを生成します。 ロボット クラスは実装が簡単で、自動化されたフレームワークと簡単に統合できます。

なぜロボット教室なのか?

ロボット教室 特定の Selenium 自動テストでは、ユーザーが OS と対話するためにキーボードまたはマウスを制御する必要があるため、Selenium で使用されます。 windows ダウンロード ポップアップ、印刷ポップアップなど、およびメモ帳、電卓などのネイティブ アプリケーションなど。Selenium Webdriver はこれらのポップアップ/アプリケーションを処理できないため、 Java バージョン 1.3 では、OS ポップアップ/アプリケーションを処理できるロボット クラスが導入されました。

ロボットクラスのドキュメント

また, ロボットクラスのドキュメント Selenium は、ユーザーが Java AWT パッケージのロボット クラスで使用できるすべてのメソッドと関数の基本的な定義、構文、使用法を理解するのに役立ちます。 ユーザーは、 オラクルの公式ウェブサイト。 ユーザーはローカル マシン上にドキュメントを自分で作成することもできます。

ローカル マシンでドキュメントを作成するには、次の手順に従います。

ステップ1) src.zip ファイルは JDK フォルダー内にあります。 src.zip をコピーし、同じものを他のフォルダーまたはディレクトリ (D: または E: など) に抽出します。

ロボットクラスのドキュメント

ステップ2) src フォルダーを抽出し、(src フォルダーまでのパス) に移動します。/src/java/awt

ステップ3) awt フォルダーの現在の場所をコピーし、コマンド プロンプトを開きます。

ステップ4) cmd で、現在のディレクトリの場所を awt フォルダーに変更し、以下に示すように「javadoc *.java」と入力します。

ロボットクラスのドキュメント

システムの処理が完了するまでしばらく待ちます。完了すると、awt フォルダーにいくつかの HTML ファイルが表示されます。

ステップ5) インデックス.htmlを開く

ロボットクラスのドキュメント

ステップ6) ここに awt パッケージの完全なドキュメントがあります。左側のナビゲーション バーで [ロボット] ハイパーリンクをクリックします (下の画像でマークされた 1 を参照)。

ロボットクラスのドキュメント

ここでは、ロボット クラスのすべてのメソッドとインターフェイスも確認できます (上の画像でマークされた 2 を参照)。

Selenium のロボット クラスのメソッドと使用法

ロボット クラスのメソッドを使用すると、ブラウザーの自動化を実行しながらキーボード/マウス イベントを操作できます。 あるいは 自動IT 使用することもできますが、欠点は、 windows, したがって、これを使用するのは良い選択肢ではありません。

Web オートメーション中にロボット クラスで一般的によく使用されるメソッドをいくつか示します。

方法 1: keyPress():

robot.keyPress(KeyEvent.VK_DOWN): キーボードの下矢印キーを押すこのメソッド

方法 2:mousePress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): このメソッドはマウスの右クリックを押します。

メソッド 3:mouseMove():

robot.mouseMove(point.getX(), point.getY()): これは、マウス ポインターを指定された X および Y 座標に移動します。

メソッド 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): キーボードの下矢印キーを放すこのメソッド

メソッド 5:mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): このメソッドはマウスの右クリックを解放します。

ロボット クラスを使用して一般的なユースケースを自動化するサンプル コード

  • Web サイト http://spreadsheetpage.com/index.php/file/C35/P10/ の例を考えてみましょう。Web 要素 (.//a[@href=contains(text(),'yearly-calendar.xls']) OS ダウンロードのポップアップが表示されます。
  • これを処理するには、ロボット クラスを使用します (コード内でロボット クラスのインスタンスを作成します。 ロボット robot = new Robot())。 JDK の AWT パッケージに含まれるロボット クラス。
キーボードのキー 方法
下矢印キーを押すには (robot.keyPress(KeyEvent.VK_DOWN)) を使用します
TABキーを押すには (robot.keyPress(KeyEvent.VK_TAB)) を使用します
Enterキーを押すには (robot.keyPress(KeyEvent.VK_ENTER)) を使用します

Selenium のロボット クラスの例

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	

class Excercise1 {	

      public static void main(String[] args) throws AWTException, InterruptedException {	
           WebDriver driver = new FirefoxDriver();	
           driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
           driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click();	
           Robot robot = new Robot();  // Robot class throws AWT Exception	
           Thread.sleep(2000); // Thread.sleep throws InterruptedException	
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button	
           
           Thread.sleep(2000);  // sleep has only been used to showcase each event separately	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_ENTER);	
       // press enter key of keyboard to perform above selected action	
     }	 
 }

実際の動作を確認するには、このビデオをチェックしてください

TestNG を使用してロボット クラス コードを実行する方法

ロボット クラスの基本的なメソッドは理解できたので、もう少し理解しましょう。plex 方法 –

を使用したくないとします。 クリック方法 Web 要素をクリックするため。

このような場合には、Robot クラスの MouseMove メソッドを使用できます。

ステップ1) MouseMove メソッドは、次のような x 座標と y 座標をパラメータとして受け取ります。 robot.mouseMove(630, 420) ここで、630 は X 軸を示し、420 ​​は Y 軸を示します。 したがって、このメソッドはマウス ポインタを現在の位置から前述の x と y の交点に移動します。

ステップ2) 次に、マウスボタンを押す必要があります。 メソッドを使用できます マウスプレス ような robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

ステップ3) 押した後、マウスを放す必要があります。 使用できます robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) マウスの左クリックを解除します。

testNG を使用してコードを実行します。

を使用してコードを実行する テスト testNG の Maven 依存関係、または TestNG jar ファイルの参照ライブラリが必要です。

TestNG の Maven 依存関係:

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>

Maven 依存関係または jar ファイルを追加した後。 testNGのTestアノテーションをインポートする必要があります。 すべて完了したら、プログラム コードを右クリックして [実行] をクリックし、[TestNG] をクリックします。すると、コードが testNG API を使用して実行を開始することがわかります。

これがコードです

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.InputEvent;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.annotations.Test;	

public class Excersise1 {	

    @Test	
    public static void  execution() throws InterruptedException, AWTException {
        WebDriver driver = new FirefoxDriver();	
        driver.manage().window().maximize();	
        driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
        Robot robot = new Robot();	
        robot.mouseMove(630, 420); // move mouse point to specific location	
        robot.delay(1500);        // delay is to make code wait for mentioned milliseconds before executing next step	
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click	
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click	
        robot.delay(1500);	
        robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button	
        Thread.sleep(2000);	
        robot.keyPress(KeyEvent.VK_ENTER);	
        // press enter key of keyboard to perform above selected action	
    }	
}	

実際の動作を確認するには、このビデオをチェックしてください

ロボット教室のメリット

  1. ロボット クラスはキーボードとマウスのイベントをシミュレートできます
  2. ロボット クラスは、Selenium Web ドライバーを使用する場合のファイルのアップロード/ダウンロードに役立ちます
  3. ロボット クラスは、現在の自動化フレームワーク (キーワード、データ駆動型またはハイブリッド) と簡単に統合できます。

ロボット教室のデメリット

ロボット フレームワークには、以下に示すいくつかの欠点があります。

  1. キーワード/マウス イベントは、Window の現在のインスタンスでのみ機能します。 たとえば、コードがロボット クラス イベントを実行しており、コードの実行中にユーザーが他の画面に移動すると、その画面でキーワード/マウス イベントが発生するとします。
  2. MouseMove などのメソッドのほとんどは画面解像度に依存するため、あるマシンで動作するコードが他のマシンでは動作しない可能性があります。

まとめ

AWT パッケージのロボット クラスは、OS と対話するためのキーボード/マウス イベントを生成するために使用されます。 windows そしてネイティブアプリ。

Robot の主な目的は、Java プラットフォームで構築された Selenium 自動テスト プロジェクトをサポートすることです。