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

リンクテキストとは何ですか Selenium?
A リンクテキスト Selenium Web ページ上のハイパーリンクを識別するために使用されます。 これはアンカー タグを使用して決定されます。 Web ページ上にハイパーリンクを作成するには、アンカー タグの後にリンク テキストを使用します。
基準に一致するリンク
リンク テキストの完全一致または部分一致を使用して、リンクにアクセスできます。 以下の例では、複数の一致が存在するシナリオを示し、WebDriver がそれらをどのように処理するかを説明します。
このチュートリアルでは、Webdriver を使用してリンクを見つけてアクセスするために利用できる方法を学習します。 また、リンクにアクセスするときに直面する一般的な問題のいくつかについて説明し、それらを解決する方法についてさらに説明します。
完全なリンクテキスト Selenium – By.linkText()
正確なリンク テキストを使用してリンクにアクセスするには、By.linkText() メソッドを使用します。。 ただし、まったく同じリンク テキストを持つリンクが XNUMX つある場合、このメソッドは最初のリンクにのみアクセスします。 以下の HTML コードを考えてみましょう。
以下の WebDriver コードを実行しようとすると、最初の「ここをクリック」リンクにアクセスすることになります。
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(); } }
その仕組みは次のとおりです -
その結果、自動的に次の場所に移動します。 Google.
部分的なリンクテキストを完成させてください Selenium – By.partialLinkText()
リンク テキストの一部を使用してリンクにアクセスするには、 By.partialLinkText() 方法。 複数の一致がある部分的なリンク テキストを指定した場合は、最初に一致したもののみがアクセスされます。 以下の HTML コードを考えてみましょう。
以下の WebDriver コードを実行すると、引き続き次のページに移動します。 Google.
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(); } }
同じリンクテキストを持つ複数のリンクを取得する方法
では、上記の問題を回避するにはどうすればよいでしょうか? 同じリンクテキストを持つリンクが複数あり、最初のリンク以外のリンクにアクセスしたい場合はどうすればよいでしょうか?
このような場合、通常は、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(); } }
上記の出力は、それぞれのページ タイトルが正しく取得されたため、両方のリンクが正常にアクセスされたことを確認します。


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)