Web要素の Selenium

⚡ スマートサマリー

Web要素の Selenium すべてのフォーム コントロールをプログラム可能なオブジェクトとして表現し、テスターが findElement、sendKeys、click、clear、submit メソッドを使用してテキスト フィールド、チェックボックス、ラジオ ボタン、送信要素を操作できるようにします。 Java コード例。

  • 🧩 位置特定精度: findElement() を使用して、ID、名前、XPath、または CSS セレクタによってフォーム要素を識別し、DOM との安定したやり取りを確保します。
  • ✍️ 入力処理: 自動実行時に既存の値を上書きすることなく、sendKeys() を使用して編集可能なテキストをフィールドに送信します。
  • 🧹 フィールドリセット: データを再入力する前に、clear() メソッドを使用して入力ボックスをクリアしてください。これにより、後続のアサーションで残存値が使用されるのを防ぎます。
  • 🖱️ ボタン操作: 対応する WebElement 参照の click() メソッドを使用して、サインインまたはナビゲーション操作をトリガーします。
  • 📨 フォームの送信: フォーム内の任意の要素に対して submit() メソッドを使用すると、WebDriver は親フォームの送信ハンドラを自動的にディスパッチします。
  • 🛡️ 安定性に関するヒント: 動的に読み込まれたページで NoSuchElementException が発生するのを防ぐため、findElement() 呼び出しの前に暗黙的または明示的な待機処理を追加してください。

Web要素の Selenium

Web要素の Selenium

フォームは、ウェブサイト訪問者から情報を収集するための基本的なウェブ要素です。ウェブフォームには、テキストボックス、パスワード入力欄、チェックボックス、ラジオボタン、ドロップダウンリスト、ファイル入力欄など、さまざまなGUIコントロールが含まれます。

このチュートリアルでは、各フォーム要素にアクセスする方法を説明します。 Selenium WebDriverと Java. Selenium すべてのフォーム要素を WebElement のオブジェクトとしてカプセル化します。 この機能では、要素を特定し、テキストの入力、ボタンのクリック、フォームの送信などの操作を行うためのAPIを提供します。以下のセクションでは、各フォーム要素で使用できるメソッドについて説明します。

WebElement の概要 FindElement、FindElements

WebElement、findElement()、findElements() の概要

Selenium WebDriver は、単純なフォーム要素をオブジェクトとして表現します。 Web要素.

WebDriver は、ID、名前、クラス、 XPathタグ名、CSSセレクタ、およびリンクテキスト。

WebDriverは、要素を検索するための以下の2つのWebElementメソッドを提供します。

  • findElement() – 単一のWeb要素を検索し、WebElementとして返します。 Selenium オブジェクト。
  • findElements() – ロケーター基準に一致する WebElement オブジェクトのリストを返します。

以下の例は、findElement() メソッドを使用して、Web ページ上のテキスト フィールドという単一の要素を WebElement オブジェクトとして取得する方法を示しています。複数の要素を検索するための findElements() メソッドについては、以降のチュートリアルで説明します。

ステップ1) WebElementオブジェクトを作成するために必要なパッケージをインポートします。

ステップ2) WebDriverクラスで利用可能なfindElement()メソッドを呼び出してWebElementオブジェクトを取得します。以下にその例を示します。

Selenium 入力テキスト

入力ボックスは、次の 2 つのタイプのいずれかを指します。

  1. テキストフィールド – Selenium 入力された値を受け取り、入力されたとおりに表示する入力テキストボックス。
  2. パスワードフィールド – 入力された値を受け入れるが、機密性の高い入力を隠すために、入力された値を一連の特殊文字(一般的にはドットやアスタリスク)としてマスクするテキストボックス。

    Selenium 入力テキスト

ロケーター

findElement() メソッドは、要素を指すロケーターをパラメータとして受け取ります。By.id()、By.name()、By.xpath()、By.cssSelector() など、さまざまなロケーターは、id、name、path などのプロパティを使用してページ上の要素を検索します。

FirePathなどのプラグインを使用すると、要素のID、XPath、その他のロケーター値を取得できます。

サンプルサイトの使用 https://demo.guru99.com/test/login.html以下のコードは、id ロケーターを使用して「メールアドレス」テキストフィールドを、name ロケーターを使用して「パスワード」フィールドを特定します。

ロケーター

  1. メールアドレス入力欄はIDで指定されています。
  2. パスワード入力欄は名前で表示されます。

キーを送信します Selenium

sendKeys() で Selenium これは、テスト実行中にテキストフィールドとパスワードフィールドに編集可能なコンテンツを入力するために使用されるメソッドです。これらのフィールドは、名前、クラス、IDなどのロケーターによって識別されます。このメソッドは、WebElement オブジェクトで使用できます。type メソッドとは異なり、sendKeys() はテキストボックス内の既存のテキストを置き換えません。

テキストの入力方法 Selenium

テキストフィールドとパスワードフィールドにテキストを入力するには、WebElement で使用できる sendKeys() メソッドを使用します。 Selenium.

同じ例を使用すると、 https://demo.guru99.com/test/login.html以下のスニペットはテキストフィールドとパスワードフィールドを見つけてテキストを入力します Selenium.

テキストイン Selenium

  1. IDロケーターを使用して「メールアドレス」テキストフィールドを見つけます。
  2. 名前ロケーターを使用して「パスワード」フィールドを見つけます。
  3. 「メールアドレス」にテキストを入力します。 Selenium sendKeys メソッド。
  4. sendKeys() メソッドを使用して、「パスワード」フィールドにパスワードを入力します。

入力値の削除 Boxes

その 晴れ() このメソッドは、入力ボックス内のテキストを削除します。 このメソッドはパラメータを必要としません。 以下のコードスニペットは、メールアドレスまたはパスワードの入力欄からテキストを削除します。

入力値の削除 Boxes

Selenium クリックボタン

その Selenium クリックボタンには、click() メソッドを使用してアクセスします。

上記の例では

  1. ログインボタンを探してください。
  2. 認証するには、サイトのログインページにある「サインイン」ボタンをクリックしてください。

Selenium クリックボタン

Selenium 送信ボタン

送信ボタンはフォーム全体をサーバーに送信します。上記のようにWebElementのclick()メソッドを呼び出すか、フォーム内の任意の要素または送信ボタン自体に対してsubmit()メソッドを使用できます。

Selenium 送信ボタン

submit() が使用されると、WebDriver は DOM を検索して要素が属するフォームを特定し、そのフォームの submit 関数をトリガーします。

完全 Code

以下に、完全に動作するコードを示します。

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

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

        // declaration and instantiation of objects/variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        String baseUrl = "https://demo.guru99.com/test/login.html";
        driver.get(baseUrl);

        // Get the WebElement corresponding to the Email Address(TextField)
        WebElement email = driver.findElement(By.id("email"));

        // Get the WebElement corresponding to the Password Field
        WebElement password = driver.findElement(By.name("passwd"));

        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        System.out.println("Text Field Set");

        // Deleting values in the text box
        email.clear();
        password.clear();
        System.out.println("Text Field Cleared");

        // Find the submit button
        WebElement login = driver.findElement(By.id("SubmitLogin"));

        // Using click method to submit form
        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        login.click();
        System.out.println("Login Done with Click");

        // Using submit method to submit the form. Submit used on password field
        driver.get(baseUrl);
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");
        driver.findElement(By.id("SubmitLogin")).submit();
        System.out.println("Login Done with Submit");

        // driver.close();
    }
}

トラブルシューティング

要素の検索中に NoSuchElementException() が発生した場合、WebDriver がアクセスした時点でその要素がページに存在しないことを意味します。

  1. FirePathを使用するか、Chromeの「要素を検証」オプションを使用して、ロケーターを再確認してください。
  2. コードで使用されている値が、FirePathで確認された要素の現在の値と異なるかどうかを確認してください。
  3. 特定の要素によっては、属性が動的に変化する場合があります。値が動的に変化する場合は、より信頼性が高いものの、やや複雑なBy.xpath()またはBy.cssSelector()に切り替えてください。
  4. 場合によっては、待機状態が問題となることがあります。WebDriverがページの読み込みが完了する前にコードを実行してしまうことがあるためです。
  5. 暗黙的または明示的な待機を使用して、findElement() の前に待機を追加します。

製品概要

  • 以下の表は、上記で説明した各タイプの要素にアクセスするためのコマンドをまとめたものです。
素子 Command 詳細説明
入力 Box sendKeys() テキストボックスに値を入力するために使用されます。
晴れ() テキストボックスの現在の値をクリアするために使用します。
リンク クリック() リンクをクリックし、次のコマンドに進む前にページの読み込みが完了するまで待機するために使用します。
送信ボタン 送信() 親フォームの送信ハンドラをトリガーすることで、フォームを送信するために使用されます。
  • WebDriver では、複数の SELECT 要素で複数のオプションを選択できます。
  • フォーム内のどの要素に対しても、submit() メソッドを使用できます。WebDriver は、その要素が属するフォームの送信機能を自動的にトリガーします。

よくあるご質問

findElement() は、一致する最初の WebElement を返し、存在しない場合は NoSuchElementException をスローします。findElements() は、一致する WebElement のリストを返し、ロケーターに一致する要素がない場合は空のリストを返します。

WebElementとは Selenium sendKeys、click、clearなどの自動化メソッドを公開するラッパーです。HTML要素は基となるDOMノードです。WebDriverはDOMノードを特定し、操作のためにWebElement参照を返します。

はい。AI支援ツールはDOMを分析し、ID、名前、相対XPath、またはCSSセレクタを使用して安定したロケーターを提案します。固有の属性の組み合わせを検出し、属性が変更された場合に代替案を提案することで、ロケーターの不安定性を軽減します。

はい。AI駆動の自己修復ロケーターは、属性が変更されるとWebElementを自動的に再バインドします。これにより、不安定な障害が減り、メンテナンスの手間が軽減され、 Selenium アジャイル開発サイクルにおける頻繁なUIアップデートにも耐えうる、安定したスイート。

一般的な WebElement 例外には、StaleElementReferenceException、ElementNotInteractableException、ElementClickInterceptedException、InvalidElementStateException、TimeoutException などがあります。それぞれが異なる DOM、可視性、または同期の問題を示しており、待機または要素参照の更新によって対処する必要があります。