Selenium으로 웹 자동화 테스트를 진행하다 보면 입력 필드(편집 상자)에 들어 있는 값을 확인해야 하는 경우가 자주 발생합니다. Selenium에서 편집 상자의 값을 가져오는 방법은 크게 두 가지입니다.
- getText() 메서드 사용 – 요소에 포함된 텍스트를 직접 추출하는 기본적인 방법입니다.
- JavascriptExecutor 클래스 사용 – JavaScript를 실행하여 DOM 요소의 value 속성을 직접 읽어오는 방법입니다.
참고로 <input> 태그처럼 내부 텍스트가 아닌 value 속성으로 값이 저장되는 요소는 getAttribute("value") 방식이나 JavascriptExecutor를 사용하는 것이 더 확실합니다.
1. getText() 메서드를 사용한 구현 예제
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class GetValueScripting {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
String url = "https://www.tutorialspoint.com/index.htm";
driver.get(url);
driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
String text = driver.findElement(By.className("gsc-input")).getText();
System.out.println("Extracted text is " + text);
driver.close();
}
}위 코드는 By.className()으로 검색 입력 상자를 찾은 뒤, getText()를 호출하여 해당 요소의 텍스트를 콘솔에 출력합니다.
2. JavascriptExecutor 클래스를 사용한 구현 예제
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.JavascriptExecutor;
public class ExtractValueScripting {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
String url = "https://www.tutorialspoint.com/index.htm";
driver.get(url);
driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
// Javascript 객체 생성
JavascriptExecutor js = (JavascriptExecutor)driver;
// 텍스트를 추출하는 명령 실행
String text = js.executeScript("return document.getElementById('gsc-i-id1').value").toString();
System.out.println("Extracted text is" + text);
driver.close();
}
}이 코드는 WebDriver 객체를 JavascriptExecutor로 캐스팅한 후, executeScript() 메서드로 JavaScript 명령을 실행하여 요소 ID(gsc-i-id1)에 해당하는 편집 상자의 value 값을 직접 반환받습니다.
정리
두 방법 모두 편집 상자의 값을 얻는 데 활용할 수 있으며, 일반적인 텍스트 추출에는 getText(), 입력 필드의 실제 값(value 속성) 확인에는 JavascriptExecutor 또는 getAttribute("value")를 사용하는 것이 좋습니다. 상황에 맞는 방식을 선택하면 더 안정적인 자동화 테스트 스크립트를 작성할 수 있습니다.