Articles

Seleniumにおける要素の検索 : SeleniumのfindElementとfindElementsの違い

Posted on

Webページ上の要素を見つけることは、Web要素の複雑さのために悪夢のようです。 しかし、ウェブ要素はあらゆるアプリケーションの開発やテストにおいて重要な役割を果たしています。 テスト担当者がより簡単に作業できるよう、この記事では Selenium の findElement および findElements について、例を挙げて説明します。

ここでは、以下の内容を説明します。

  1. Selenium findElementの紹介
  2. findElementとfindElementsの違い
  3. Selenium findElementの構文
  4. ロケータの種類
  5. ロケータの使用について findElementへのストラテジー

Selenium findElementの紹介

ウェブページとのインタラクションでは、ドライバーがウェブ要素を見つけ、クリック、エンター、セレクトなどのJavaScriptイベントをトリガーする必要があります。 エンター、セレクトなどの または、フィールドの値を入力する必要があります。 通常、Webアプリケーションの自動テストは、Webページ上の関連するWeb要素を見つけることから始めます。

Selenium は、Web 要素を識別するための 2 つの方法を定義しています:

  • findElement:
  • findElement: ウェブページ内のウェブ要素を一意に識別するために使用されるコマンドです。

これらの2つの方法の違いをより詳しく理解してみましょう。

findElementとfindElementsの違い

td

findElement findElements
複数のウェブエレメントがロケータによって発見された場合、最初にマッチしたウェブエレメントを返します 複数のマッチしたウェブエレメントのリストを返します
要素が見つからない場合はNoSuchElementExceptionをスローします マッチする要素が見つからない場合は空のリストを返します
ユニークなウェブ要素を検出します。 一致する要素のコレクションを返す

いくつかの基本的なSeleniumコマンドを理解するには、Seleniumの基本的なコマンドを参照してください。 Selenium Webdriverの基本的なコマンドを理解するには、「Basic Commands of Selenium Webdriver」をご覧ください。

Syntax of Selenium findElement

findElementコマンドは、WebElementタイプのオブジェクトを返します。 ID、Name、ClassName、リンクテキスト、XPathなど様々なロケータストラテジーを使用することができます。

以下に構文を示します。

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

ロケータストラテジーは以下の値で構成されます。

  1. ID
  2. Name
  3. Class Name
  4. Tag Name
  5. Link Text
  6. XPath

Locator Valueは、Web要素を簡単に識別することができるユニークな方法です。

例:

driver.findElement(By.xpath("//input")).sendKeys("Guitar");

Selenium findElementsの構文

findElementsコマンドは、与えられたロケーター戦略とロケーター値を使用して見つかった要素がない場合、空のリストを返します。

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

Example:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Try Selenium Testing for Free

さて、様々なロケータの助けを借りてウェブの要素を見つける方法をより深く理解してみましょう。

Selenium findElement をさまざまな方法で使用する方法を理解しましょう。

ID で検索

ID は各要素に対して一意に定義され、ID ロケーターを使用して要素を検索する最も一般的な方法です。 Web サイトに動的に生成された ID がある場合、この戦略は要素を一意に見つけるためには使用できません。 しかし、ロケーターにマッチする最初のウェブ要素を返します。

例を示します。 www.amazon.com を例に、自動化して要素を見つける方法を考えてみましょう。

見てわかるように、twotabsearchtextbox を値とする ID ロケーターで構成されています。

名前で検索

これは「IDで検索」と似ていますが、ドライバーが「id」の代わりに「name」属性で要素を検索する点が異なります。 同じamazonのWebページを考えてみましょう。

コード全体は、ID検索の場合と同様ですが、findElementの構文に違いがあります。

elementName = driver.findElement(By.name("field-keywords"))

Find By LinkText

LinkTextは、ウェブページ内のリンクを見つけるのに役立ちます。

さて、下図のように Returns リンクを探してみましょう。

テスターがそのリンクをクリックして検査すると、下のスナップショットに示すように、Returns というリンク テキストが見つかります。

これは、以下の構文で Selenium findElement を使用するだけで見つけることができます:

elementLinktext = driver.findElement(By.linkText("Returns”))

Find By CSS Selector

CSS セレクタは、Web ページにスタイル ルールを提供するために使用され、1 つまたは複数の Web 要素を識別するためにも使用できます。

例を挙げます。 Amazonのページの同じ検索ボックスを考えてみましょう。 この検索ボックスには class 属性があり、その値は nav-search-input です。

elementcss= driver.findElement(By.cssSelector('div.nav-search-input'))

XPath による検索

XPath は、ページの HTML 構造をナビゲートする Selenium のテクニックです。 XPath を使用すると、テスターはあらゆるドキュメントの XML 構造をナビゲートすることができ、HTML ドキュメントと XML ドキュメントの両方に使用することができます。

例。 XPath の助けを借りて、Amazon で同じ検索バーの位置を確認してみましょう。 以下のコードでは、ID ロケーターが含まれています。 相対的なXPathは「//」で始まることに注意してください。

下の画像では、inputタグが見えます。 これを //input で始めます。 ここで、//inputはタグ名を意味しています。 id属性を利用し、その値としてtwotabsearchtextboxを一重引用符で囲んで渡します。

//input

さて、Selenium の findElement メソッドを使用して、以下のコードを実行します:

elementxpath = driver.findElement(By.xpath("//input"))

実際のデバイスで Selenium テストを無料で実行する

Web 要素の位置を特定することは、Web サイトや Web アプリの自動 Selenium テストの基本です。 Seleniumの基礎知識については、Selenium WebDriverチュートリアルをご覧ください

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です