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

Java Selenium WebDriver로 브라우저 탭 전환하는 방법

Selenium에서는 여러 개의 브라우저 탭을 자유롭게 오갈 수 있습니다. 탭을 전환하려면 먼저 링크를 새 탭으로 열어야 하는데, 이때 Keys.chord 메서드와 sendKeys 메서드를 함께 사용합니다. Keys.chord 메서드는 한 번에 여러 개의 키를 조합해서 전달할 수 있도록 해주며, 조합하고자 하는 키나 문자열을 인수로 넘겨주면 됩니다.

예를 들어 Keys.CONTROLKeys.ENTER를 Keys.chord 메서드의 인수로 전달하면 Ctrl+Enter 키 입력이 생성됩니다. 이렇게 만들어진 문자열을 sendKeys 메서드의 인수로 넘기고, 해당 메서드를 driver.findElement로 찾은 링크 요소에 적용하면 새 탭에서 링크가 열립니다.

문법(Syntax)

String clickl = Keys.chord(Keys.CONTROL,Keys.ENTER);
driver.findElement(By.xpath("//*[text()='Terms of Use']")). sendKeys(clickl);

링크가 새 탭에서 열리면, 현재 열려 있는 모든 창의 핸들(window handle)을 ArrayList에 담아 관리합니다. 그다음 switchTo 메서드를 사용해 드라이버의 포커스를 새 탭으로 이동시키는데, 이때 새 탭의 window id를 인수로 전달합니다.

새 탭에서 필요한 작업을 모두 마친 후에는 다시 switchTo 메서드를 호출하고 부모 창(원래 창)의 window id를 인수로 넘겨서 원래 화면으로 복귀할 수 있습니다.

이제 실제로 두 개의 탭 사이를 전환해 보겠습니다.

Java Selenium WebDriver로 브라우저 탭 전환하는 방법

예제 코드

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 java.util.List;
import java.util.ArrayList;
public class SwitchTab{
    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/about/about_careers.htm");
       // 5초 대기 설정
       driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
       // Keys.Chord 문자열 생성
       String clickl = Keys.chord(Keys.CONTROL,Keys.ENTER);
       // 새 탭에서 링크 열기 - Keys.Chord 문자열을 sendKeys에 전달
       driver.findElement(
       By.xpath("//*[text()='Terms of Use']")).sendKeys(clickl);
       Thread.sleep(1000);
       // 모든 창 핸들을 ArrayList에 저장
       ArrayList<String> newTb = new ArrayList<String>(driver.getWindowHandles());
       // 새 탭으로 전환
       driver.switchTo().window(newTb.get(1));
       System.out.println("Page title of new tab: " + driver.getTitle());
       // 부모 창으로 전환
       driver.switchTo().window(newTb.get(0));
       System.out.println("Page title of parent window: " + driver.getTitle());
       driver.quit();
    }
}

실행 결과(Output)

Java Selenium WebDriver로 브라우저 탭 전환하는 방법