リンクテキストと部分リンクテキスト Selenium

⚡ スマートサマリー

リンクテキストと部分リンクテキスト Selenium アンカーテキストを使用して、ウェブページ上のハイパーリンクを特定します。By.linkText() メソッドは完全一致し、By.partialLinkText() メソッドは部分一致します。どちらのロケーターも大文字と小文字を区別し、最初に一致した箇所を返します。

  • 🔗 リンクテキストの定義: ページ上のハイパーリンクを、表示されているアンカーテキストに基づいて特定します。
  • 🎯 By.linkText(): リンクテキストと完全に一致するものを検索し、最初に見つかったものを返します。
  • 🔎 By.partialLinkText(): リンクテキストの一部に一致し、最初に一致した部分も返します。
  • 🔠 大文字と小文字を区別: どちらのロケーターも大文字と小文字を区別して扱うため、「egis」と「EGIS」は異なる表記になります。
  • 🧱 複数リンク/ブロックリンク: 重複要素には、XPathまたはCSSセレクターを使用します。どちらの方法も、ブロックタグの内側でも外側でも機能します。

リンクテキストと部分リンクテキスト Selenium

リンクテキストとは何ですか Selenium?

A リンクテキスト Selenium Web ページ上のハイパーリンクを識別するために使用されます。 これはアンカー タグを使用して決定されます。 Web ページ上にハイパーリンクを作成するには、アンカー タグの後にリンク テキストを使用します。

基準に一致するリンク

リンク テキストの完全一致または部分一致を使用して、リンクにアクセスできます。 以下の例では、複数の一致が存在するシナリオを示し、WebDriver がそれらをどのように処理するかを説明します。

このチュートリアルでは、Webdriver を使用してリンクを見つけてアクセスするために利用できる方法を学習します。 また、リンクにアクセスするときに直面する一般的な問題のいくつかについて説明し、それらを解決する方法についてさらに説明します。

完全なリンクテキスト Selenium – By.linkText()

正確なリンク テキストを使用してリンクにアクセスするには、By.linkText() メソッドを使用します。。 ただし、まったく同じリンク テキストを持つリンクが XNUMX つある場合、このメソッドは最初のリンクにのみアクセスします。 以下の HTML コードを考えてみましょう。

リンクテキストイン Selenium–By.LinkText()

リンクテキストイン Selenium–By.LinkText()

以下の WebDriver コードを実行しようとすると、最初の「ここをクリック」リンクにアクセスすることになります。

リンクテキストイン Selenium–By.LinkText()

Code:

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

public class MyClass {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/link.html";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        driver.findElement(By.linkText("click here")).click();
        System.out.println("title of page is: " + driver.getTitle());
        driver.quit();
    }

}

その仕組みは次のとおりです -

リンクテキストイン Selenium–By.LinkText()

その結果、自動的に次の場所に移動します。 Google.

リンクテキストイン Selenium–By.LinkText()

部分的なリンクテキストを完成させてください Selenium – By.partialLinkText()

リンク テキストの一部を使用してリンクにアクセスするには、 By.partialLinkText() 方法。 複数の一致がある部分的なリンク テキストを指定した場合は、最初に一致したもののみがアクセスされます。 以下の HTML コードを考えてみましょう。

部分的なリンクテキスト入力 Selenium – By.partialLinkText()

 部分的なリンクテキスト入力 Selenium – By.partialLinkText()

以下の WebDriver コードを実行すると、引き続き次のページに移動します。 Google.

 部分的なリンクテキスト入力 Selenium – By.partialLinkText()

Code:

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

public class P1 {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/accessing-link.html";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        driver.findElement(By.partialLinkText("here")).click();
        System.out.println("Title of page is: " + driver.getTitle());
        driver.quit();
    }
}

部分的なリンクテキスト入力 Selenium – By.partialLinkText()

同じリンクテキストを持つ複数のリンクを取得する方法

では、上記の問題を回避するにはどうすればよいでしょうか? 同じリンクテキストを持つリンクが複数あり、最初のリンク以外のリンクにアクセスしたい場合はどうすればよいでしょうか?

このような場合、通常は、By.xpath()、By.cssSelector()、または By.tagName() などの異なるロケータが使用されます。

最もよく使用されるのは By.xpath() です。これは最も信頼性が高いですが、見た目が複雑で読みにくいです。

リンクテキストの大文字と小文字の区別

リンクテキストの大文字と小文字の区別

のパラメータ By.linkText() (NAIST) と By.partialLinkText() どちらも大文字と小文字が区別されるので、大文字と小文字が区別されます。たとえば、 Mercury Tours のホームページには、「egis」というテキストを含むリンクが 2 つあります。1 つは上部メニューにある「登録」リンクで、もう 1 つはページの右下にある「こちらから登録」リンクです。

リンクテキストの大文字と小文字の区別

どちらのリンクにも「egis」という文字シーケンスが含まれていますが、「By.partialLinkText()」メソッドは、文字の大文字・小文字に応じて、これら2つのリンクを別々にアクセスします。以下のサンプルコードを参照してください。

リンクテキストの大文字と小文字の区別

Code

public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        String theLinkText = driver.findElement(By
                .partialLinkText("egis"))
                .getText();
        System.out.println(theLinkText);
        theLinkText = driver.findElement(By
                .partialLinkText("EGIS"))
                .getText();
        System.out.println(theLinkText);

        driver.quit();

    }

ブロックの外側と内側のリンク

最新の HTML5 標準では、 、 、 などのブロックレベルのタグの内側と外側にタグを配置できます。 「By.linkText()」メソッドと「By.partialLinkText()」メソッドは、これらのブロックレベル要素の外側と内側にあるリンクにアクセスできます。 以下の HTML コードを考えてみましょう。

ブロックの外側と内側のリンク

ブロックの外側と内側のリンク

以下の WebDriver コードは、By.partialLinkText() メソッドを使用してこれらのリンクの両方にアクセスします。

ブロックの外側と内側のリンク

Code:

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

public class MyClass {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/block.html";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        driver.findElement(By.partialLinkText("Inside")).click();
        System.out.println(driver.getTitle());
        driver.navigate().back();
        driver.findElement(By.partialLinkText("Outside")).click();
        System.out.println(driver.getTitle());
        driver.quit();
    }
}

上記の出力は、それぞれのページ タイトルが正しく取得されたため、両方のリンクが正常にアクセスされたことを確認します。

よくあるご質問

By.linkText() はリンクの表示されているテキスト全体を正確に一致させますが、By.partialLinkText() は指定された部分文字列を含む任意のリンクに一致させます。どちらのメソッドも、条件を満たすリンクが複数ある場合は、最初に一致したリンクのみを返します。

はい。By.linkText() と By.partialLinkText() はどちらも大文字と小文字を区別するため、大文字と小文字は重要です。「egis」と「EGIS」は異なる値として扱われ、同じページ上の異なるリンクに一致する可能性があります。

リンクテキストロケーターは最初の一致のみを返すため、特定のリンクを対象とするには By.xpath() または By.cssSelector() を使用するか、すべてのリンクを収集して必要なリンクを選択するには、findElements() と By.tagName(“a”) を使用してください。

AIツールはDOMを分析し、属性を安定性に基づいてランク付けすることで、堅牢なXPathまたはCSSセレクタを提案します。これらのツールは、一意で脆弱性の低い識別子を優先することで、テスト実行中の軽微なUI変更による障害を軽減します。

はい。自己修復テストフレームワークは、AI を使用してロケーターが失敗したことを検出し、類似性に基づいて近くの要素をスコアリングし、最も近い一致に自動的に切り替え、ping 手作業によるメンテナンスを減らしてテストを実行しています。