링크 텍스트 및 부분 링크 텍스트로 요소 찾기 Selenium

링크 텍스트란? Selenium?

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

기준과 일치하는 링크

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

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

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

정확한 링크 텍스트를 사용하여 링크에 액세스하는 것은 By.linkText() 메서드를 통해 수행됩니다.. 그러나 동일한 링크 텍스트를 가진 두 개의 링크가 있는 경우 이 방법은 첫 번째 링크에만 액세스합니다. 아래 HTML 코드를 고려해보세요

링크 텍스트 입력 Selenium–By.LinkText()

링크 텍스트 입력 Selenium–By.LinkText()

아래 WebDriver 코드를 실행하려고 하면 첫 번째 “여기를 클릭하세요” 링크에 액세스하게 됩니다.

링크 텍스트 입력 Selenium–By.LinkText()

암호:

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 = "http://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()

암호:

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 = "http://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()" 메서드가 문자의 대문자 사용에 따라 이 두 링크에 개별적으로 액세스한다는 것입니다. 아래 샘플 코드를 참조하세요.

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

암호

public static void main(String[] args) {								
        String baseUrl = "http://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() 메서드를 사용하여 이 두 링크에 모두 액세스합니다.

블록 외부 및 내부 링크

암호:

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 = "http://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();			
    }		
}		

위 출력은 해당 페이지 제목이 올바르게 검색되었기 때문에 두 링크 모두 성공적으로 액세스되었음을 확인합니다.

요약

  • 링크는 click() 메서드를 사용하여 액세스됩니다.
  • WebElement에 사용할 수 있는 로케이터 외에도 링크에는 링크 텍스트 기반 로케이터도 있습니다.
    • By.linkText() – 매개변수로 제공된 링크 텍스트와 정확히 일치하는 링크를 기반으로 링크를 찾습니다.
    • By.partialLinkText() – 링크 텍스트의 부분적인 텍스트 일치를 기반으로 링크를 찾습니다.
  • 위의 로케이터는 모두 대소문자를 구분합니다.
  • 일치하는 항목이 여러 개 있는 경우 By.linkText() 및 By.partialLinkText()는 첫 번째 일치 항목만 선택합니다. 동일한 링크 텍스트를 가진 여러 링크가 존재하는 경우 xpath, CSS를 기반으로 하는 다른 로케이터가 사용됩니다.
  • findElements() & By.tagName(“a”) 메소드는 페이지에서 로케이터 기준과 일치하는 모든 요소를 ​​찾습니다.
  • 링크는 블록 수준 요소 내부에 있든 외부에 있든 By.linkText() 및 By.partialLinkText()를 통해 액세스할 수 있습니다.