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

アクションクラス 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 オブジェクトをインスタンス化します。
ステップ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();
}





