Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

Selenium WebDriver에서 iframe 다루기 – HTML 프레임 전환 완벽 가이드

Selenium WebDriver에서는 iframe을 자유롭게 다룰 수 있습니다. HTML 코드에서 프레임은 <iframe>, <frameset> 또는 <frame> 태그로 정의되며, 하나의 HTML 문서 안에 또 다른 HTML 문서를 삽입(임베드)하는 용도로 사용됩니다.

Selenium WebDriver에서 iframe 다루기 – HTML 프레임 전환 완벽 가이드

프레임 전환이 필요한 이유

Selenium은 기본적으로 부모 브라우저 드라이버에만 접근할 수 있습니다. 따라서 프레임 내부의 요소에 접근하려면 드라이버의 포커스를 메인 브라우저 창에서 해당 프레임으로 전환해야 합니다.

프레임으로 전환하는 대표적인 방법은 다음과 같습니다.

  • switchTo().frame(id) – 프레임의 id 또는 name 값을 인자로 전달합니다.
    예시: driver.switchTo().frame("id") → 해당 id를 가진 프레임으로 전환

  • switchTo().frame(m) – 프레임의 인덱스를 인자로 전달합니다. 인덱스는 0부터 시작합니다.
    예시: driver.switchTo().frame(0) → 페이지의 첫 번째 프레임으로 전환

  • switchTo().frame(webelement n) – 프레임의 WebElement 객체를 인자로 전달합니다.
    예시: driver.switchTo().frame(l) → WebElement l에 해당하는 프레임으로 전환

  • switchTo().defaultContent() – 프레임에서 벗어나 메인 페이지로 포커스를 되돌립니다.
    예시: driver.switchTo().defaultContent()

실습 예제

다음은 중첩된 프레임 페이지에서 프레임 이름을 이용해 전환한 후, 프레임 내부 텍스트를 추출하는 Java 코드입니다.

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;
public class iFrameMethods{
    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://the-internet.herokuapp.com/frames");
        driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
        // 요소를 찾아 클릭
        driver.findElement(By.partialLinkText("Nested")).click();
        // 프레임 이름으로 프레임 전환
        driver.switchTo().frame("frame-bottom");
        WebElement m = driver.findElement(By.cssSelector("body"));
        System.out.println("Frame text: " +m.getText());
        driver.close();
    }
}

실행 결과

코드를 실행하면 하단 프레임(frame-bottom)에 포함된 텍스트가 콘솔에 출력되며, 이를 통해 프레임 전환이 정상적으로 동작했음을 확인할 수 있습니다.

Selenium WebDriver에서 iframe 다루기 – HTML 프레임 전환 완벽 가이드