アクションクラス Selenium – マウスクリックとキーボードイベント

このチュートリアルでは、キーボードとマウスのイベントの処理を学習します。 Selenium ウェブドライバー

アクションクラス Selenium

アクションクラス Selenium キーボードとマウスのイベントを処理するためにセレンが提供する組み込み機能です。コントロールキーによる複数のイベントのクリック、ドラッグアンドドロップイベントなど、さまざまな操作が含まれます。アクションクラスからのこれらの操作は、 Selenium ウェブドライバー。

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

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

方法 Description
clickAndHold() 現在のマウスの位置で (放さずに) クリックします。
contextClick() 現在のマウスの位置でコンテキストクリックを実行します。 (マウスの右クリック操作)
ダブルクリック() 現在のマウスの位置でダブルクリックを実行します。
ドラッグアンドドロップ(ソース、ターゲット) ソース要素の位置でクリックアンドホールドを実行し、ターゲット要素の位置に移動して、マウスを放します。

パラメーター:

source- ボタンダウンをエミュレートする要素。

target- 移動してマウスを放す要素。

ドラッグアンドドロップバイ(ソース、x オフセット、y オフセット) ソース要素の位置でクリックアンドホールドを実行し、指定されたオフセットだけ移動して、マウスを放します。

Parameters:

source- ボタンダウンをエミュレートする要素。

xOffset - 水平方向の移動オフセット。

yOffset - 垂直移動オフセット。

keyDown(modifier_key) 修飾キーを押します。 修飾キーを放しません。その後の操作では、修飾キーが押されたままであると想定される場合があります。

Parameters:

modifier_key – 修飾キーのいずれか (Keys.ALT、Keys.SHIFT、または Keys.CONTROL)

keyUp(修飾子 _key) キーリリースを実行します。

Parameters:

modifier_key – 修飾キーのいずれか (Keys.ALT、Keys.SHIFT、または Keys.CONTROL)

moveByOffset(x オフセット, y オフセット) マウスを現在の位置 (または 0,0) から指定されたオフセットだけ移動します。

Parameters:

x-offset- 水平オフセット。 負の値はマウスを左に動かすことを意味します。

y オフセット - 垂直オフセット。 負の値はマウスを下に動かすことを意味します。

moveToElement(toElement) マウスを要素の中央に移動します。

Parameters:

toElement- 移動先の要素。

release() 現在のマウス位置で押したマウスの左ボタンを放します。
sendKeys(onElement, charsequence) 一連のキーストロークを要素に送信します。

Parameters:

onElement – キーストロークを受け取る要素、通常はテキストフィールド

charsequence – 送信されるキーストロークのシーケンスを表す任意の文字列値

次の例では、moveToElement()メソッドを使用して、 Mercury トゥールのテーブル行。以下の例を参照してください。

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

上に示したセルは、 要素。 ホバーされていない場合、その色は #FFC455 (オレンジ) です。 ホバー後、セルの色が透明になります。 オレンジ色のテーブル全体の青色の背景と同じ色になります。

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

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

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

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

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

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

この場合、単に「ホーム」リンクにマウスを置くだけなので、moveToElement() メソッドを使用します。 build() メソッドは常に最後に使用されるメソッドであるため、リストされたすべてのアクションが XNUMX つのステップにコンパイルされます。

ステップ4) ステップ 3 で設計した Action オブジェクトを実行する場合は、perform() メソッドを使用します。

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

以下は、背景色を確認するための 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 = "http://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();
        }
}

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

アクションクラス Selenium

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

Action クラスと Actions クラスを使用して、一連のアクションを構築できます。。 build() メソッドを使用してシリーズを閉じることを忘れないでください。 以下のサンプルコードを考えてみましょう。

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

public static void main(String[] args) {
String baseUrl = "http://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() ;

}

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

まとめ

  • 特別なキーボードおよびマウス イベントの処理は、AdvancedUserInteractions API を使用して行われます。
  • よく使用されるキーワードとマウス イベントは、doubleClick()、keyUp、dragAndDropBy、contextClick、sendKeys です。