ロボット教室 Selenium ウェブドライバー

ロボット教室とは Selenium?

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

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

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

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

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

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

ステップ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 でのみ動作する実行可能ファイル (exe) が生成されるという欠点があるため、使用するのは適切なオプションではありません。

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

ロボットクラスの基本的なメソッドを理解したので、次はもう少し複雑なメソッドを理解しましょう。

を使用したくないとします。 クリック方法 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 を使用してコードを実行する:

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

TestNG Mavenの依存関係:

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

Mavenの依存関係またはjarファイルを追加した後、testNGのテストアノテーションをインポートする必要があります。すべて完了したら、プログラムコードを右クリックして[実行]をクリックし、 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. ロボットクラスは、セレンウェブドライバーを使用するときにファイルのアップロード/ダウンロードに役立ちます。
  3. ロボット クラスは、現在の自動化フレームワーク (キーワード、データ駆動型またはハイブリッド) と簡単に統合できます。

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

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

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

まとめ

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

ロボットの主な目的は、Selenium自動テストプロジェクトのビルドをサポートすることです。 Java プラットフォーム