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

파이썬(Python)으로 Selenium에서 헤드리스(Headless) 테스트 실행하는 방법

Selenium은 헤드리스(headless) 실행 기능을 지원합니다. 헤드리스 모드란 실제 브라우저 창을 화면에 띄우지 않고 백그라운드에서 테스트를 수행하는 방식으로, CI/CD 환경이나 서버에서 자동화 테스트를 실행할 때 특히 유용합니다.

크롬(Chrome) 브라우저에서 헤드리스 실행을 구현하려면 ChromeOptions 클래스를 활용하면 됩니다. 이 클래스의 객체를 생성한 후, add_argument() 메서드를 호출하고 인자로 --headless를 전달하면 됩니다. 마지막으로 해당 옵션 객체를 웹드라이버에 적용하면 설정이 완료됩니다.

아래 예제에서는 헤드리스 모드로 페이지를 실행한 뒤, 해당 페이지의 제목인 "About Careers at Tutorials Point - Tutorialspoint"를 가져오는 과정을 살펴보겠습니다.

예제 코드

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Options 클래스 객체 생성
c = Options()

# headless 파라미터 추가
c.add_argument("--headless")

# 웹드라이버 객체에 headless 옵션 적용
driver = webdriver.Chrome(executable_path='../drivers/chromedriver', options=c)

# 암시적 대기 시간 설정
driver.implicitly_wait(5)

# URL 접속
driver.get("https://www.tutorialspoint.com/about/about_careers.htm")
print('Page title: ' + driver.title)

# 드라이버 종료
driver.quit()

코드 설명

위 코드의 주요 흐름은 다음과 같습니다.

1. Options 클래스의 객체를 생성합니다.
2. add_argument("--headless") 메서드를 통해 헤드리스 모드를 활성화합니다.
3. 옵션이 적용된 상태로 크롬 웹드라이버 객체를 생성합니다.
4. implicitly_wait(5)로 요소 탐색 시 최대 5초간 대기하도록 설정합니다.
5. 지정한 URL에 접속한 후 페이지 제목을 출력하고, 마지막에는 driver.quit()으로 세션을 종료합니다.

실행 결과

코드를 실행하면 브라우저 창이 열리지 않은 채 백그라운드에서 테스트가 진행되며, 콘솔에 다음과 같이 페이지 제목이 정상적으로 출력됩니다.

Page title: About Careers at Tutorials Point - Tutorialspoint

참고 사항

Selenium 4 이상에서는 크로미움 계열 브라우저에서 --headless=new 인자를 사용하는 것이 권장됩니다. 새로운 헤드리스 모드는 기존 방식보다 실제 브라우저 환경과 더 유사하게 동작하므로, 최신 버전을 사용한다면 c.add_argument("--headless=new")로 변경해 보시기 바랍니다. 또한 Selenium 4부터는 executable_path가 deprecated 되었으므로, Service 객체를 사용하는 방식도 함께 고려할 수 있습니다.