アクションクラス Selenium

⚡ スマートサマリー

アクションクラス Selenium 高度なユーザーインタラクションAPIを通じて、ホバー、ドラッグアンドドロップ、右クリック、キーの組み合わせなど、高度なキーボードおよびマウスイベントを処理します。このチュートリアルでは、アクションとアクションクラス、主要なメソッド、および複数のインタラクションを1つのシーケンスに連結する方法について説明します。

  • 🖱️ 主な目的: Actionsクラスは、基本的なclick()では処理できない複合的なマウスおよびキーボードイベントを自動化します。
  • 🔑 XNUMXつのクラス: アクションはインタラクションを構築し、コンパイルされた実行シーケンスを保存します。
  • 🧱 構築してから実行する: メソッドを連結し、build() で終了させ、perform() で実行します。
  • ???? 主な方法: moveToElement()、dragAndDrop()、keyDown()/keyUp()、contextClick()、およびsendKeys()。
  • 🤖 AIの有効化: AIアシスタントは、インタラクションテスト中にアクションクラスのコードを生成し、ロケーターを自己修復します。

マウスオーバー出力

アクションクラス Selenium

アクションクラス Selenium は、キーボードとマウスのイベントを処理するための組み込み機能です。Control キーを使用した複数クリック、ドラッグ アンド ドロップなど、さまざまな操作をサポートしています。これらの操作は、Advanced User Interactions API を使用して実行されます。 Selenium ウェブドライバー。

キーボードとマウスのイベントの処理

特別なキーボードおよびマウスイベントの処理は、 高度なユーザー インタラクション API。 含まれています (NAIST) と 行動 これらのイベントを実行するために必要なクラス。Actionsクラスが提供する、最も一般的に使用されるキーボードおよびマウスイベントを以下に示します。

方法 詳細説明
clickAndHold() 現在のマウスの位置で (放さずに) クリックします。
contextClick() 現在のマウスカーソル位置でコンテキストクリック(右クリック)を実行します。
ダブルクリック() 現在のマウスの位置でダブルクリックを実行します。
ドラッグアンドドロップ(ソース、ターゲット) ソース要素をクリックして押し続け、ターゲット要素に移動してからマウスを離します。パラメータ:ソース(押す要素)、ターゲット(離す要素)。
ドラッグアンドドロップバイ(ソース、x オフセット、y オフセット) ソース要素をクリックして長押しすると、指定されたオフセット分移動し、その後指を離します。パラメータ:ソース、xオフセット(水平方向)、yオフセット(垂直方向)。
keyDown(modifier_key) 修飾キーを離さずに押し続けるため、以降の操作ではキーが押されたままになっているとみなされます。 パラメータ: 修飾キー (Keys.ALT、Keys.SHIFT、または Keys.CONTROL)。
keyUp(modifier_key) 修飾キーを解放します。パラメータ: 修飾キー (Keys.ALT、Keys.SHIFT、または Keys.CONTROL)。
moveByOffset(x オフセット, y オフセット) マウスカーソルを現在の位置(または原点(0,0))から指定されたオフセット分だけ移動させます。x座標が負の値の場合は左に移動し、y座標が負の値の場合は上に移動します。
moveToElement(toElement) マウスカーソルを要素の中央に移動します。パラメータ:移動先の要素。
release() 現在位置で、押されている左マウスボタンを離します。
sendKeys(onElement, charsequence) 要素に一連のキーストロークを送信します。パラメータ:onElement(通常はテキストフィールド)、charsequence(送信するキーストローク)。

次の例では、 moveToElement() 1 つの上にカーソルを合わせる方法 Mercury ツアーテーブルの列。

キーボードとマウスのイベントの処理

上に示した細胞は、要素。マウスカーソルがホバーされていないときは、色は#FFC455(オレンジ)です。マウスカーソルがホバーされると、セルの色が透明になり、周囲のテーブルの背景色に一致します。

ステップ1) インポートする (NAIST) と 行動 クラス。

アクションとアクションクラスをインポートする

ステップ2) 新しい Actions オブジェクトをインスタンス化します。

Actionsオブジェクトをインスタンス化する

ステップ3) ステップ2で取得したActionsオブジェクトを使用して、アクションをインスタンス化します。

アクションオブジェクトをインスタンス化する

ここでは、 moveToElement() 「ホーム」リンクにカーソルを合わせる方法。 build() このメソッドは常に最後に呼び出されるため、リストされているすべてのアクションが単一のステップにまとめられます。

ステップ4) perform() ステップ3で設計したアクションオブジェクトを実行するためのメソッド。

アクションを実行する

以下は、WebDriver の背景色をチェックする完全なコードです。マウスオーバーの前後の要素。

package newproject;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;

public class PG7 {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();

        driver.get(baseUrl);
        WebElement link_Home = driver.findElement(By.linkText("Home"));
        WebElement td_Home = driver.findElement(By.xpath(
            "//html/body/div/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr"));

        Actions builder = new Actions(driver);
        Action mouseOverHome = builder.moveToElement(link_Home).build();

        String bgColor = td_Home.getCssValue("background-color");
        System.out.println("Before hover: " + bgColor);
        mouseOverHome.perform();
        bgColor = td_Home.getCssValue("background-color");
        System.out.println("After hover: " + bgColor);
        driver.close();
    }
}

以下の出力は、マウスオーバー後に背景色が透明になったことを示しています。

マウスオーバー出力

一連の複数のアクションの構築

Action クラスと Actions クラスを使用して一連のアクションを作成できます。シリーズを終了するには、 build() 方法。以下のサンプルコードを参照してください。

複数のアクションの連続を構築する

public static void main(String[] args) {
    String baseUrl = "https://www.facebook.com/";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    WebElement txtUsername = driver.findElement(By.id("email"));

    Actions builder = new Actions(driver);
    Action seriesOfActions = builder
        .moveToElement(txtUsername)
        .click()
        .keyDown(txtUsername, Keys.SHIFT)
        .sendKeys(txtUsername, "hello")
        .keyUp(txtUsername, Keys.SHIFT)
        .doubleClick(txtUsername)
        .contextClick()
        .build();

    seriesOfActions.perform();
}

一連のアクションの出力

よくあるご質問

Action クラスは、Actions クラスで構築されたキーボードとマウスの操作のコンパイル済みシーケンスを表します。これは、Advanced User Interactions API を介して実行されます。 Selenium ウェブドライバー。

アクション(複数形)は、ホバーやクリックなどのインタラクションを連鎖させるために使用されるビルダーです。アクション(単数形)は、build() によって返されるコンパイル済みオブジェクトであり、perform() で実行します。

build() は、連鎖したすべてのインタラクションを単一の複合アクションにコンパイルします。これは常に perform() の直前に呼び出されるため、キューに入れられたステップは1つのシーケンスとしてまとめて実行されます。

perform() は、構築されたアクションをブラウザに対して実行します。これがないと、連鎖した操作はキューに追加されるだけで、実際にページに送信されることはありません。

Actions オブジェクトに対して moveToElement(element) メソッドを使用し、その後 build() メソッドと perform() メソッドを呼び出します。これにより、カーソルが要素の中心に移動し、ドロップダウンメニューなどのホバー動作がトリガーされます。

clickAndHold、contextClick、doubleClick、dragAndDrop、dragAndDropBy、keyDown、keyUp、moveByOffset、moveToElement、release、sendKeysをサポートしており、高度な操作のほとんどを網羅しています。

AIツールは、要素の変更に合わせて適応する自己修復型ロケーターを使用することで、ホバーやドラッグ&ドロップのテストにおける不安定なエラーを軽減します。また、安定したXPathを推奨し、スマートな待機処理を自動的に追加します。

はい。AIコードアシスタントは、「ホームにカーソルを合わせて右クリックする」といった平易な英語のシナリオを、build()とperform()を使った動作するアクションチェーンに変換し、適切なロケーターを提案します。