링크 텍스트 및 부분 링크 텍스트 Selenium

⚡ 스마트 요약

링크 텍스트 및 부분 링크 텍스트 Selenium 웹 페이지에서 하이퍼링크의 앵커 텍스트를 통해 하이퍼링크를 찾습니다. `By.linkText()` 메서드는 정확한 텍스트와 일치하고, `By.partialLinkText()` 메서드는 일부와 일치합니다. 두 메서드 모두 대소문자를 구분하며 첫 번째 일치 항목을 반환합니다.

  • 🔗 링크 텍스트 정의: 페이지에서 보이는 앵커 텍스트를 기준으로 하이퍼링크를 찾습니다.
  • 🎯 By.linkText(): 링크 텍스트와 정확히 일치하는 항목을 찾아 첫 번째 일치 항목을 반환합니다.
  • 🔎 By.partialLinkText(): 링크 텍스트의 일부와 일치하는 항목을 찾고, 첫 번째 일치 항목을 반환합니다.
  • 🔠 대소문자 구분: 두 검색 엔진 모두 대문자와 소문자를 구분하므로 "egis"와 "EGIS"는 서로 다릅니다.
  • 🧱 다중/블록 링크: 중복 항목을 찾으려면 XPath 또는 CSSSelector를 사용하세요. 두 방법 모두 블록 태그 안팎에서 작동합니다.

링크 텍스트 및 부분 링크 텍스트 Selenium

링크 텍스트란? Selenium?

A 링크 텍스트 입력 Selenium 웹페이지의 하이퍼링크를 식별하는 데 사용됩니다. 앵커 태그를 사용하여 결정됩니다. 웹 페이지에 하이퍼링크를 만들기 위해 앵커 태그와 링크 텍스트를 사용할 수 있습니다.

기준과 일치하는 링크

링크 텍스트와 정확히 일치하거나 부분적으로 일치하는 것을 사용하여 링크에 액세스할 수 있습니다. 아래 예는 여러 일치 항목이 존재하는 시나리오를 제공하고 WebDriver가 이를 처리하는 방법을 설명합니다.

이 튜토리얼에서는 Webdriver를 사용하여 링크를 찾고 액세스하는 데 사용할 수 있는 방법을 알아봅니다. 또한 링크에 액세스할 때 직면하게 되는 몇 가지 일반적인 문제에 대해 논의하고 이를 해결하는 방법에 대해 자세히 논의할 것입니다.

링크 텍스트 완성 Selenium – By.linkText()

정확한 링크 텍스트를 사용하여 링크에 액세스하는 것은 By.linkText() 메서드를 통해 수행됩니다.. 그러나 동일한 링크 텍스트를 가진 두 개의 링크가 있는 경우 이 방법은 첫 번째 링크에만 액세스합니다. 아래 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() By.partialLinkText() 둘 다 대소문자를 구분하므로 대문자 사용이 중요합니다. 예를 들어, Mercury Tours 홈페이지에는 "egis"라는 텍스트가 포함된 두 개의 링크가 있습니다. 하나는 상단 메뉴에 있는 "REGISTER" 링크이고 다른 하나는 페이지 오른쪽 하단에 있는 "Register here" 링크입니다.

링크 텍스트의 대소문자 구분

두 링크 모두 "egis"라는 문자열을 포함하고 있지만, "By.partialLinkText()" 메서드는 문자의 대소문자에 따라 두 링크에 각각 접근합니다. 아래 샘플 코드를 참조하세요.

링크 텍스트의 대소문자 구분

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 수동 관리가 덜 필요한 테스트가 실행됩니다.

이 게시물을 요약하면 다음과 같습니다.