Selenium WebDriver를 사용하면 HTML 요소의 style display 속성을 설정할 수 있습니다. DOM(Document Object Model)은 JavaScript를 통해 페이지의 요소들과 상호작용하며, Selenium은 executeScript 메서드를 활용해 JavaScript 명령을 실행합니다. 이때 실행하고자 하는 명령어는 메서드의 인자(argument)로 전달됩니다.
요소의 display 스타일 설정과 같은 일부 작업은 Javascript Executor를 통해서만 수행할 수 있습니다. 먼저 getElementById 메서드로 대상 요소를 찾은 뒤, 해당 웹 요소에 style.display 메서드를 적용하여 표시 유형을 지정하면 됩니다.
문법(Syntax)
executor.executeScript
("document.getElementById('gsc-i-id1').style.display='block';");예제(Example)
코드 구현 예시입니다.
import org.openqa.selenium.By;
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 ElementStyleSet{
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.tutorialspoint.com/index.htm");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
// executeScript 메서드를 사용하는 Javascript executor 클래스
JavascriptExecutor j = (JavascriptExecutor) driver;
// style.display 메서드로 display 속성 설정
j.executeScript ("document.getElementById('gsc-i-id1').style.display='block';");
driver.close()
}
}
코드 설명
위 예제 코드의 주요 흐름은 다음과 같습니다.
1. ChromeDriver 설정: System.setProperty 메서드로 chromedriver 경로를 지정한 후 WebDriver 인스턴스를 생성합니다.
2. 페이지 접속 및 대기 시간 설정: driver.get()으로 대상 웹사이트에 접속하고, implicitlyWait()를 사용해 최대 5초까지 암묵적 대기를 설정하여 요소 로딩을 기다립니다.
3. JavascriptExecutor 캐스팅: WebDriver 객체를 JavascriptExecutor 타입으로 형 변환(casting)하여 JavaScript 실행 기능을 사용할 수 있도록 준비합니다.
4. display 속성 변경: executeScript 메서드 내에서 document.getElementById로 ID가 'gsc-i-id1'인 요소를 찾고, style.display 값을 'block'으로 설정하여 화면에 해당 요소가 표시되도록 합니다.
이 방식은 CSS로 인해 숨겨진(hidden) 요소를 강제로 보이게 하거나, 반대로 'none' 값을 설정해 요소를 숨기는 등 동적인 UI 조작이 필요한 자동화 테스트 시나리오에서 매우 유용하게 활용됩니다.