WebDriver
WebDriver는 사용자 에이전트를 탐색하고 제어하는 원격 제어 인터페이스입니다. 이 인터페이스는 플랫폼과 언어에 구애받지 않는 프로토콜을 제공하여 외부 프로그램이 원격으로 웹 브라우저의 동작을 지시할 수 있게 합니다.
다양한 플랫폼의 여러 브라우저에서 동일하게 실행될 수 있는 명령어 세트를 작성하는 능력은 사용자에게 일관된 경험을 제공하는 데 매우 중요합니다. 웹 플랫폼의 새로운 발전과 함께, 기기의 다양성 증가 및 기술 간의 실제 상호 운용성에 대한 요구가 높아지면서 WebDriver는 크로스 브라우저 테스트를 위한 도구를 제공합니다.
WebDriver는 웹 문서 내의 DOM 요소를 찾고 조작하며 사용자 에이전트의 동작을 제어하기 위한 인터페이스 집합입니다. 주로 웹 개발자가 별도의 제어 프로세스를 통해 사용자 에이전트를 자동화하는 테스트를 작성할 수 있도록 고안되었지만, 브라우저 내 스크립트가 별도의 브라우저를 제어하는 방식으로도 사용될 수 있습니다.
사용법
그렇다면 WebDriver로 무엇을 할 수 있고, 어떤 모습일까요? WebDriver는 프로그래밍 언어에 구애받지 않기 때문에, 이 질문에 대한 답은 어떤 WebDriver 클라이언트를 사용하느냐와 선택한 언어에 따라 달라집니다.
하지만 Python으로 작성된 널리 사용되는 클라이언트를 사용한다면, WebDriver와의 상호작용은 다음과 같은 모습일 수 있습니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
with webdriver.Firefox() as driver:
driver.get("https://google.com/ncr")
wait = WebDriverWait(driver, 10)
driver.find_element(By.NAME, "q").send_keys(f"cheese{Keys.RETURN}")
wait.until(presence_of_element_located((By.XPATH, '//*[@id="rcnt"]')))
results = driver.find_elements(By.XPATH, "//a[@href]")
for i, elem in enumerate(results):
print(f'#{i} {elem.text} ({elem.get_attribute("href")})')
이는 다음과 유사한 출력을 생성할 수 있습니다.
#1 Cheese - Wikipedia (https://en.wikipedia.org/wiki/Cheese)
참조
WebDriver 레퍼런스에서는 사용 가능한 명령(Command), 기능(Capabilities), 오류 등을 포함하여 WebDriver API에 대한 자세한 정보를 제공합니다.
명령
- Add Cookie
- Back
- Close Window
- Create Virtual Pressure Source
- Create Virtual Sensor
- Delete All Cookies
- Delete Cookie
- Delete Virtual Pressure Source
- Delete Virtual Sensor
- Forward
- Get All Cookies
- Get Element Attribute
- Get Element Property
- Get Element Tag Name
- Get Named Cookie
- Get Timeouts
- Get Title
- Get Virtual Sensor Information
- Get Window Handles
- Get Window Rect
- New Session
- New Window
- Refresh
- Set Timeouts
- Set Window Rect
- Update Virtual Pressure Source
- Update Virtual Sensor Reading