XPath에서 FindElement를 사용하여 Selenium
⚡ 스마트 요약
XPath에서 FindElement를 사용하여 Selenium `By` 명령은 페이지에서 단일 웹 요소를 고유하게 식별하는 반면, `FindElements` 명령은 일치하는 요소의 전체 목록을 반환합니다. 두 명령 모두 ID, 이름, 클래스 이름 및 XPath 전략을 포함하는 `By` 로케이터 객체를 허용합니다.
In Selenium 웹드라이버, 요소 찾기 FindElements 웹 요소에서 클릭이나 텍스트 입력과 같은 작업을 수행하기 전에 웹 요소의 위치를 찾는 데 사용되는 핵심 명령어입니다.
요소 찾기 명령이 필요한 이유는 무엇입니까?
웹 페이지와 상호 작용하려면 사용자는 먼저 웹 요소를 찾아야 합니다. '요소 찾기' 명령은 웹 페이지 내에서 하나의 웹 요소를 고유하게 식별하는 데 사용되는 반면, '요소 찾기' 명령은 웹 요소 목록을 식별하는 데 사용됩니다. 요소는 여러 가지 방법을 사용하여 식별할 수 있습니다. 위치 추적 전략 ID, 이름, 클래스 이름, 링크 텍스트, 부분 링크 텍스트, 태그 이름 등과 같은 정보 xpath.
FindElement 명령 구문
아래는 FindElement 명령의 구문입니다. Selenium 웹드라이버:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
FindElement 명령은 By 객체를 매개변수로 받아 WebElement 형식의 단일 객체를 반환합니다. By 객체는 ID, 이름, 클래스 이름, XPath 등과 같은 다양한 로케이터 전략과 함께 사용할 수 있습니다.
로케이터 전략은 다음 값 중 하나일 수 있습니다.
- ID
- 이름
- 클래스 이름
- 태그 이름
- 링크 텍스트
- 부분 링크 텍스트
- xpath
로케이터 값은 웹 요소를 식별하는 데 사용되는 고유 값입니다. 개발자와 테스터는 ID 또는 이름과 같은 특정 속성을 사용하여 웹 요소를 고유하게 식별할 수 있도록 해야 합니다.
예:
WebElement loginLink = driver.findElement(By.linkText("Login"));
예: 다음에서 요소 찾기 Selenium
다음 데모 애플리케이션은 FindElement 명령의 작동 방식을 보여주기 위해 사용됩니다.
https://demo.guru99.com/test/ajax.html
시나리오 :
1 단계 : AUT 열기
2 단계 : 라디오 버튼을 찾아서 클릭한 다음, 확인 버튼을 클릭하세요.
package com.sample.stepdefinitions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class NameDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://demo.guru99.com/test/ajax.html");
// Find the radio button for “No” using its ID and click on it
driver.findElement(By.id("no")).click();
//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();
}
}
FindElements 명령 구문
특정 로케이터와 일치하는 모든 요소를 찾아야 할 때는 첫 번째 요소만 찾는 것이 아니라 FindElements를 사용합니다. 구문은 다음과 같습니다.
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
FindElements 명령은 By 객체를 매개변수로 받아 웹 요소 목록을 반환합니다. 지정된 로케이터 전략과 로케이터 값을 사용하여 요소를 찾지 못한 경우 빈 목록을 반환합니다.
예:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
예: 요소 찾기 Selenium
FindElements 함수가 일치하는 요소 목록을 순회하는 방식을 보여주기 위해 동일한 데모 애플리케이션이 사용됩니다.
시나리오 :
1 단계 : 열기 URL 테스트 대상 애플리케이션
2 단계 : 라디오 버튼의 텍스트를 찾아서 출력 콘솔에 출력하세요.
package com.sample.stepdefinitions;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class NameDemo {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/ajax.html");
List<WebElement> elements = driver.findElements(By.name("name"));
System.out.println("Number of elements:" +elements.size());
for (int i=0; i<elements.size();i++){
System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
}
}
}
요소 찾기 vs 요소 찾기
아래는 '요소 찾기' 명령과 '요소 찾기' 명령의 주요 차이점입니다.
| 요소 찾기 | 요소 찾기 |
|---|---|
| 동일한 로케이터를 가진 웹 요소가 여러 개 발견된 경우, 첫 번째 웹 요소를 반환합니다. | 웹 요소 목록을 반환합니다. |
| 지정된 로케이터 전략과 일치하는 요소가 없는 경우 NoSuchElementException 예외를 발생시킵니다. | 로케이터 전략과 일치하는 웹 요소가 없는 경우 빈 목록을 반환합니다. |
| XPath를 이용한 요소 찾기는 웹 요소를 하나만 찾습니다. | 해당 기능은 위치 지정 전략과 일치하는 요소들의 모음을 찾습니다. |
| 해당 사항 없음 | 각 웹 요소는 배열처럼 0부터 시작하는 숫자로 인덱싱됩니다. |


