でツールチップを確認する方法 Selenium

⚡ スマートサマリー

ツールチップを確認する Selenium WebDriverは、ツールチップテキストを検証するための2つの確実なパターンを提供します。1つはHTMLのtitle属性を直接読み取る方法、もう1つはActions APIを使用して動的にレンダリングされる要素にマウスカーソルを合わせる方法です。 JavaスクリプトまたはjQueryのツールチップ。

  • 💡 重要な原則: ツールチップはマウスオーバー時に表示されるテキストなので、検証方法はブラウザがそのテキストをDOMのどこに保存するかによって異なります。
  • 🏷️ 静的ツールチップ: HTML タイトルベースのツールチップの場合は、以下を呼び出します。 getAttribute("title") or getDomAttribute("title") そして、期待される文字列と比較します。
  • 🖱️ 動的なツールチップ: jQuery、CSS、またはプラグインのツールチップには、Actions クラスを使用します。 moveToElement(target).build().perform() ツールチップ要素を読む前に。
  • 豪華<XNUMXxXNUMXF><XNUMXxXNUMXF><XNUMXxBXNUMX><XNUMXxBXNUMX>️ ベストプラクティス: ホバー後にツールチップコンテナが表示されるまで待ってから、テキストをアサートします。 getText() 古いデータや空のデータを読み取らないようにするため。
  • 🚀 Selenium 4 ヒント: ペア Selenium 安定した、ドライバパスに依存しないツールチップチェックのために、Thread.sleep の代わりに明示的な待機を行うマネージャ。

ツールチップを確認する Selenium webdriver

ツールチップ入力 Selenium

A ツールチップ入力 Selenium ツールチップとは、ウェブページ上のオブジェクトにマウスカーソルを重ねたときに表示される短いテキストです。オブジェクトは、リンク、画像、ボタン、テキストエリアなどです。ツールチップのテキストには、カーソル下の要素に関する詳細情報が表示されることがよくあります。

ツールチップは従来、要素の「title」属性として実装されていました。この属性の値は、マウスカーソルを重ねたときにツールチップとして表示されました。これは、要素に関する情報を提供する静的なテキストであり、スタイルは適用されません。

今日では、ツールチップの実装に利用できるプラグインが多数あります。スタイリング、レンダリング、画像、リンクを備えた高度なツールチップは、 JavaスクリプトやjQueryプラグイン、またはCSSのみのツールチップを使用できます。

  • HTMLの「title」属性を介して実装された静的ツールチップにアクセスまたは検証するには、 getAttribute("title") WebElement のメソッド。返された値(ツールチップのテキスト)は、検証のために期待値と比較されます。
  • その他のツールチップの実装については、WebDriverが提供する「高度なユーザーインタラクションAPI」を使用してマウスオーバー効果を作成し、要素のツールチップを取得します。

高度なユーザー インタラクション API の概要

高度なユーザーインタラクションAPIは、ドラッグアンドドロップ、ホバー、複数選択、キーの押下と解放、その他のキーボードまたはマウス操作など、ウェブページ上でのユーザー操作を公開します。

これを参照することができます 公式アクションクラスリファレンス APIの詳細については。

ジャンプする前にping シナリオに当てはめて、スライダー要素をオフセット分だけ移動させるために必要なクラスとメソッドを見ていきましょう。

ステップ1) APIを使用するには、以下のパッケージとクラスをインポートしてください。

高度なユーザー インタラクション API

ステップ2) 「Actions」クラスのオブジェクトを作成し、ユーザー操作のシーケンスを構築します。Actionsクラスは、moveToElement()やdragAndDrop()などの連鎖的な操作を構築します。ドライバオブジェクトは、コンストラクタのパラメータとして渡されます。

高度なユーザー インタラクション API

ステップ3) 「Actions」クラスのbuild()メソッドを使用してActionオブジェクトを作成します。ビルダー上でキューに登録されたすべてのアクションを実行するには、perform()メソッドを呼び出します。

高度なユーザー インタラクション API

APIが提供するユーザーアクションメソッドのうち、clickAndHold(element)、moveByOffset(10, 0)、release()などの使用方法を見てきました。APIには他にも多くのメソッドが用意されています。

ツールチップの実装と Selenium 検証アプローチ

ツールチップの種類 レンダリング方法 Selenium アプローチ
HTMLのタイトル属性 要素自体に格納されたテキスト。ブラウザはマウスオーバー時に表示します。 読む getAttribute("title") or getDomAttribute("title")マウスオーバーは不要です。
jQuery / JSプラグイン マウスオーバー時に、要素の横に専用のdiv要素が表示されます。 アクションを使用する moveToElement(target).perform()待ってから、ツールチップ要素を読み取ってください。 getText().
CSSのみのツールチップ 擬似要素または兄弟divが切り替えられます :hover. アクションでホバーをトリガーし、レンダリングされたテキストまたは計算されたスタイルを読み上げます。

でツールチップを確認 (処理) する方法 Selenium

よくある2つのシナリオを例に、ツールチップへのアクセスと検証について見ていきましょう。

  • シナリオ1:ツールチップは「title」属性を使用して実装されます。
  • シナリオ2:ツールチップはjQueryプラグインを使用して実装されます。

シナリオ1:HTMLの「title」属性

この場合は、サンプルサイトを使用します https://demo.guru99.com/test/social-icon.html そして、ページ右上の「github」アイコンのツールチップを確認してください。

HTMLの「タイトル」属性

まず要素を特定し、次にその「title」属性を読み取り、期待されるツールチップテキストと比較します。

ツールチップは「title」属性に含まれているため、マウスオーバーを自動化する必要はありません。getAttribute() メソッドを使用して属性値を取得するだけです。

HTMLの「タイトル」属性

ここでは、コードは次のとおりです。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class ToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/social-icon.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get(baseUrl);
        String expectedTooltip = "Github";

        // Find the Github icon at the top right of the header
        WebElement github = driver.findElement(By.xpath(".//*[@class='soc-ico show-round']/a[4]"));

        // Read the "title" attribute value of the Github icon
        String actualTooltip = github.getAttribute("title");

        // Assert that the tooltip value matches the expected one
        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

コードの説明:

  1. 「github」アイコンを表す WebElement を見つけます。
  2. getAttribute() メソッドを使用して、その「title」属性を読み取ります。
  3. 期待されるツールチップテキストに対して、その値を検証します。

Selenium 4つのヒント: 好む getDomAttribute("title") リテラルHTML属性の場合、 Selenium マネージャーはハードコーディングではなくドライバーを解決する chromedriver.exe.

シナリオ2:jQueryプラグイン

多くのjQueryプラグインはツールチップを実装しており、それぞれ表示方法が若干異なります。

プラグインによっては、ツールチップのマークアップを常にトリガー要素の横に保持するものもあれば、カーソルがトリガー要素に入ったときに動的に「div」タグを作成するものもある。

このデモンストレーションでは、「jQuery Tools Tooltip」スタイルを使用します。

店は開いています https://demo.guru99.com/test/tooltip.html「今すぐダウンロード」にカーソルを合わせると、画像、吹き出しの背景、小さな表、クリック可能なリンクを含む高度なツールチップが表示されます。

jQueryプラグインのツールチップ

ソースコードを調べると、ツールチップを表すdiv要素が既に「今すぐダウンロード」リンクの横に配置されていることがわかります。下のスクリプトタグは、ツールチップが表示されるタイミングを制御しています。

jQueryプラグインのツールチップソース

次に、ツールチップ内に表示されているリンクテキストを確認します。

まず、「今すぐダウンロード」のWebElementを探します。インタラクションAPIを使用して、その要素に移動します(マウスオーバー)。次に、表示されたツールチップ内のリンクに対応するWebElementを見つけ、そのテキストが期待値と一致するかどうかを確認します。

jQueryプラグインのツールチップ検証

ここでは、コードは次のとおりです。

import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class JqueryToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/tooltip.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        String expectedTooltip = "What's new in 3.2";
        driver.get(baseUrl);

        WebElement download = driver.findElement(By.xpath(".//*[@id='download_now']"));
        Actions builder = new Actions(driver);

        // Hover over the "Download now" link to reveal the tooltip
        builder.moveToElement(download).build().perform();

        WebElement toolTipElement = driver.findElement(By.xpath(".//*[@class='box']/div/a"));
        String actualTooltip = toolTipElement.getText();

        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Code 説明:

  1. マウスカーソルを合わせる「今すぐダウンロード」要素に対応するWebElementを探してください。
  2. Interactions APIを使用して、「今すぐダウンロード」にカーソルを合わせます。
  3. ツールチップが表示されたら、ツールチップ内のリンクを表すWeb要素(「a」タグ)を探します。
  4. ツールチップのテキストを読むには getText() そしてそれを、保存されている期待値と比較します。 expectedTooltip.

よくあるご質問

ツールチップが HTML の title 属性を使用して構築されている場合は、WebElement に対して getAttribute(“title”) または getDomAttribute(“title”) を呼び出し、返されたテキストを期待値と比較します。

Actions クラスを使用して moveToElement(target).perform() を実行し、ツールチップ要素が表示されるまで待機してから、getText() を使用してそのテキストまたは属性を読み取り、値をアサートします。

要素にタイトル属性がない場合、またはツールチップのテキストが別のdiv要素によって動的にレンダリングされる場合は、nullが返されます。DOMを調べて、実際のツールチップコンテナを特定してください。

AIを活用したツールは、ロケーターを自動的に生成し、DOMが変更された際にセレクターを自己修復し、ホバーシーケンスを提案することで、不安定なツールチップテストやブラウザ間のメンテナンス時間を削減します。

はい。最新のAIアシスタントはページをスキャンし、ホバー可能な要素を検出し、すぐに実行できるコンテンツを生成します。 Selenium アサーションを含むスクリプトを使用することで、ツールチップのカバー範囲を確保するための手動スクリプト作成作業を大幅に削減できます。